Matplotlib은 Python에서 사용할 수 있는 시각화 라이브러리로 numpy와 scipy를 베이스로 하여 다양한 라이브러리와 호환성이 좋고 다양한 시각화 방법론을 제공한다.
matplotlib에서 그리는 시각화는 Figure라는 큰 틀에 Ax라는 서브플롯을 추가해서 만들고 서브플롯을 사용할 때는 add_subplot()을 사용한다.
import matplotlib as mpl
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot()
plt.show()
figure 사이즈로 ax의 사이즈를 조정할 수 있으며 가로, 세로 길이(inch 단위)를 tuple 형태로 전달한다.
fig = plt.figure(figsize=(12, 7))
ax = fig.add_subplot()
plt.show()
ax를 여러 개 나누어서 그릴 수도 있는데 add_subplot(1,2,?)은 세로를 기준으로 두 개, (2,1,?)은 가로를 기준으로 두 개를 그린다.
fig = plt.figure()
ax = fig.add_subplot(1, 2, 1)
ax = fig.add_subplot(1, 2, 2)
plt.show()
같은 그래프를 동시에 그리게 되면 색깔이 자동으로 파랑, 주황, 초록 ... 등으로 지정되지만 다른 그래프를 동시에 그리게 되면 같은 색(파랑)으로 지정된다. 색상 지정은 한 글자, 색 이름, 16진수 등으로 다양하게 지정할 수 있다.
ax.plot([1, 1, 1], color='r') # 한 글자로 정하는 색상
ax.plot([2, 2, 2], color='forestgreen') # color name
ax.plot([3, 3, 3], color='#000000') # hex code (BLACK)
그래프를 구분하기 위해 범례를 추가할 수 있는데 이때 legend() 함수를 호출해야 시각화에도 보여진다.
ax.plot([1, 1, 1], label='1')
ax.plot([2, 2, 2], label='2')
ax.plot([3, 3, 3], label='3')
ax.legend()
타이틀은 각 ax와 figure 자체에도 지정할 수 있고 setter로 세팅하는 정보들은 getter로 받아올 수 있다.
ax1.set_title("ax1")
ax2.set_title("ax2")
fig.suptitle("fig") ## sup = super를 의미
ticks와 ticklables로 축에 값 및 텍스트를 지정할 수 있다.
ax.set_xticks([0, 1, 2])
ax.set_xticklabels(['zero', 'one', 'two'])
그래프에 annotation 및 화살표 등을 추가할 수도 있고 이때 정렬 형태는 제목과 다를 수 있다.
ax.annotate(text='This is Annotate', xy=(1, 2))
ax.annotate(text='This is Annotate', xy=(1, 2),
xytext=(1.2, 2.2),
arrowprops=dict(facecolor='black'),
)