01.6 matplotlib
딥러닝 실험에서는 그래프 그리기와 데이터 시각화도 중요하답니다. matplotlib은 그래프 그리기를 위한 라이브러리입니다. matplotlib을 사용하면 그래프 그리기와 데이터 시각화가 쉬워집니다. 이번 절에서는 그래프를 그리고 이미지를 화면에 표시하는 방법을 설명합니다.
1.6.1 단순한 그래프 그리기
그래프를 그리려면 matplotlib의 pyplot 모듈을 이용합니다. 당장 sin 함수를 그리는 예를 살펴봅시다.
import numpy as np
import matplotlib.pyplot as plt
# 데이터 준비
x = np.arange(0, 6, 0.1) # 0에서 6까지 0.1 간격으로 생성
y = np.sin(x)
# 그래프 그리기
plt.plot(x, y)
plt.show()
이 코드에서는 넘파이의 arange 메서드로 $[0, 0.1, 0.2, \dots, 5.8, 5.9]$라는 데이터를 생성하여 변수 x에 할당했습니다. 그다음 줄에서는 x의 각 원소에 넘파이의 sin 함수인 np.sin()을 적용하여 변수 y에 할당합니다. 이제 x와 y를 인수로 plt.plot 메서드를 호출해 그래프를 그립니다. 마지막으로 plt.show()를 호출해 그래프를 화면에 출력하고 끝납니다. 이 코드를 실행하면 [그림 1-3]의 이미지가 그려집니다.
그림 1-3 sin 함수 그래프
1.6.2 pyplot의 기능
여기에 cos 함수도 추가로 그려보겠습니다. 또, 제목과 각 축의 이름(레이블) 표시 등, pyplot의 다른 기능도 사용해보겠습니다.
import numpy as np
import matplotlib.pyplot as plt
# 데이터 준비
x = np.arange(0, 6, 0.1) # 0에서 6까지 0.1 간격으로 생성
y1 = np.sin(x)
y2 = np.cos(x)
# 그래프 그리기
plt.plot(x, y1, label="sin")
plt.plot(x, y2, linestyle="--", label="cos") # cos 함수는 점선으로 그리기
plt.xlabel("x") # x축 이름
plt.ylabel("y") # y축 이름
plt.title('sin & cos') # 제목
plt.legend()
plt.show()
결과는 [그림 1-4]와 같습니다. 그래프의 제목과 축 이름이 보일 겁니다.
그림 1-4 sin 함수와 cos 함수 그래프
1.6.3 이미지 표시하기
pyplot에는 이미지를 표시해주는 메서드인 imshow()도 준비되어 있습니다. 이미지를 읽어들일 때는 matplotlib.image 모듈의 imread() 메서드를 이용합니다. 예를 보시죠.
import matplotlib.pyplot as plt
from matplotlib.image import imread
img = imread('lena.png') # 이미지 읽어오기(적절한 경로를 설정하세요!)
plt.imshow(img)
plt.show()
이 코드를 실행하면 [그림 1-5]처럼 읽어들인 이미지가 표시됩니다.
그림 1-5 이미지 표시하기

앞의 코드에서는 lena.png라는 이미지 파일이 현재 작업 디렉터리에 있다고 가정했습니다. 여러분은 자신의 환경에 맞게 파일 이름과 경로를 적절히 수정해야 합니다. 이 책이 제공하는 소스 코드에서는 dataset 디렉터리에서 이 lena.png 파일을 찾을 수 있습니다. 예를 들어 파이썬 인터프리터로 ch01 디렉터리에서 이 코드를 실행한다면 이미지 경로를 ‘lena.png’에서 ‘../dataset/lena.png’로 변경하면 올바르게 작동합니다.*
* 옮긴이_ 영상처리 교재에 거의 빠지지 않고 등장하는 레나(Lena)의 이 사진은 자그마치 1972년에 찍은 것이라 하네요. 숨은 이야기가 궁금한 분은 웹에서 레나를 찾아보세요.