강의 소개
파이썬의 가장 대표적인 시각화 패키지인 Matplotlib을 통해 간단한 시각화 실습을 진행해보겠습니다.
왜 Matplotlib일까?
- Matplotlib은 Python에서 사용할 수 있는 시각화 패키지로, numpy와 scipy를 베이스로 하여 다양한 라이브러리와 호환성이 좋다.
- Scikit-Learn, PyTorch, Tensorflow, pandas
- 또한 막대, 선, 산점도 등 다양한 시각화 방법을 제시하며, 사용하는 유저가 많기에 검색을 통해 원하는 형태의 시각화 자료도 쉽게 찾을 수 있따.
- 그 외에도 seaborn, Plotly, Bokeh, Altair 등의 시각화 라이브러리도 존재하긴 한다.
- 단, Matplotlib이 가장 범용성이 넓고, base가 되는 라이브러리로 꼭 파악하자!
우선 matplotlib 설치는 아래 코드로 설치를 한다
!pip install matplotlib
!conda install matplotlib
matplotlib은 관례적으로 mpl로 코드 상에서 사용한다.
matplotlib에는 텍스트, 날짜, 도형 등을 위해 다양한 모듈을 지원하지만, 가장 범용적으로 사용하면 pyplot 모듈을 불러오며, 이 역시 관례적으로 plt로 알리아스를 지정하여 사용한다.
해당 내용은 matplotlib 3.3.4 버전에서 진행 할 예정이다
버전은 아래 print~~ 코드로 확인할 수 있으며, 버전이 다르면 atrribute 사용 방법 등이 달라지므로 맞춰줘야 한다.
fig = plt.figure(figsize = (12,7))
ax1 = fig.add_subplot(121)
ax2 = fig.add_subplot(122)
ax1.plot([1, 1, 1], color='r')
ax1.plot([2, 2, 2], color='forestgreen')
ax1.plot([3, 3, 3], color='#000000')
ax1.set_title('Basic Plot')
ax1.set_xticks([0, 1, 2])
ax1.set_xticklabels(['zero', 'one', 'two'])
ax1.annotate(text='This is Annotate', xy=(1, 2),
xytext=(1.2, 2.2),
arrowprops=dict(facecolor='black'),
)
ax1.legend()
ax2.plot([1, 1, 1], label='1')
ax2.plot([2, 2, 2], label='2')
ax2.plot([3, 3, 3], label='3')
ax2.set_title('Basic Plot')
ax2.set_xticks([0, 1, 2])
ax2.set_xticklabels(['zero', 'one', 'two'])
ax2.text(x=1,y=2,s="This is Text")
ax2.legend()
plt.suptitle("Super title!")
plt.show()
코드를 하나씩 살펴보면
- plt.figure() 형태로 Figure라는 큰 틀을 생성해준다. 이때, figsize를 통해서 틀의 크기를 지정해준다.
- fig는 ax라는 subplot 형태를 생성하여 사용할 수 있다. 다음과 같이 fig.add_subplot()으로 서브 플랏을 생성해주는데, 이 때 figure는 전체 subplot이 몇 행 몇 열로 구서되어 있는지, 그 중 어느 서브 플랏을 ax1 과 같이 할당하여 사용할 지를 지정한다.
- 다음은 각 서브 플랏에 그래프를 그리는데, plot에 색상을 지정하지 않아도 원색으로 된 색상이 자동으로 표시가 된다. 단, 동일한 그래프인 경우 추가할 때 마다 색상이 변하고, 다른 그래프를 추가하면 다시 파랑색부터 지정되므로, 이 점을 유의해야 한다.
- 각 데이터의 label도 지정해줄 수 있는데, 이는 ax2와 같이 label을 plot에서 라벨을 지정해주면 되며, 이 것을 범례로 표시하려면 아래 ax2.legend()를 사용해주면 된다.
- 그래프의 타이틀을 지정해주는 방법은 두 가지로, set_title()과 suptitle()이다. 이 둘의 차이는, set_title은 서브플랏에, suptitle()은 fig의 타이틀이다.
- 각 axis에 값과 각 값의 label명을 지정해줄 수 있다. set_xticks()로 x축에 어떤 값들을 나타낼지, 그리고 set_xticklabels()로 그 값들을 어떤 라벨료 표시해줄 지를 나타낼 수 있다.
- plot 내에서 텍스트를 넣어주는 방법은 text와 annotate가 있는데, text는 텍스트 자체를 쓰는 느낌이라면, annotate는 텍스트를 지정하고 그 포인트를 정해주는 느낌이다. 그리고 arrow등을 통해 강조도 할 수 있다.
-마지막으로 plt.show()를 통해 그래프를 그리는데, notebook 환경에서는 안써도 나타나지만, 그 외에는 컴퓨터 내장 그래픽 모듈을 사용해야 하므로 해당 기능을 반드시 사용해야 한다.
