[인공지능] Python & Matplotlib

iMaeng·2022년 2월 3일
1

네이버 부스트캠프

목록 보기
5/10
post-thumbnail

Python & Matplotlib


Matplotlib

Matplotlib은 Python에서 사용할 수 있는 대표적인 시각화 라이브러리이다.

기본적으로 numpy와 scipy를 베이스로 하기 때문에 다양한 라이브러리(Scikit-Learn, PyTorch, TensorFlow, Pandas)와 호환성이 좋다는 장점이 있다.

다음과 같은 시각화를 진행하기에 용이하다.

  • 막대 그래프
  • 선 그래프
  • 산점도
  • ETC

참고로 matplotlib 말고도 Seaborn, Plotly, Bokeh, Altair 등의 라이브러리가 존재한다.

보통 matplotlib, matplotlib.pyplot은 다음과 같이 불러온다. (pyplot은 matplotlib 내에서 가장 많이 사용하는 모듈)

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

기본 plot

matplotlib에서 시각화를 할 때, 기본적으로 fig라는 큰 프레임 안에 ax라는 서브플롯을 만들어서 이용한다.

fig = plt.figure(figsize=(12,7)) # figsize로 figure 크기 조절.
# fig.set_facecolor('black') # figure의 배경 색 변경.
ax = fig.add_subplot()
plt.show()

만약 2개 이상의 그래프를 그리고 싶다면 각 ax를 지정해서 진행하면 된다.

fig = plt.figure()
ax = fig.add_subplot(121) # (1,2)의 배치 중 첫번째 그래프.
ax = fig.add_subplot(122) # (1,2)의 배치 중 두번째 그래프.
plt.show()

각각 지정된 ax에 plt를 이용하여 그래프를 그려낼 수 있다.

fig = plt.figure()

x1 = [1,2,3]
x2 = [3,2,1]

ax1 = fig.add_subplot(211)
plt.plot(x1) # ax1에 그래프를 그리기.

ax2 = fig.add_subplot(212)
plt.plot(x2) # ax2에 그래프를 그리기.

plt.show()

위와 같이 plt로 그래프를 그릴 때는 순차적으로 그릴 때 유용하지만, 순차적이지 않게 그래프를 그려야 하는 경우가 더 많다.

이럴 때 이용할 수 있는 방법이 ax 객체에 직접 그래프를 그리는 것이다.
아래의 코드도 위와 같은 결과의 그래프를 얻을 수 있지만, 좀 더 파이썬스러운(pythonic) 코드라고 할 수 있다.

fig = plt.figure()

x1 = [1,2,3]
x2 = [3,2,1]

ax1 = fig.subplot(211)
ax2 = fig.subplot(212)

ax1.plot(x1)
ax2.plot(x2)
plt.show()

Plot의 요소들

시각화를 제대로 하려면 말 그대로 눈에 확 들어오는 그래프를 그릴 줄 알아야 한다.
ax 객체를 적절하게 다룰 줄 알면 다채로운 시각화를 할 수 있다.

  1. 여러개 그래프 동시에 그리기
  2. 색상 지정하기
  3. 텍스트 사용하기(title, legend, text ...)
fig = plt.figure()
ax = fig.add_subplot(111)

# 동시에 3개의 그래프 그리기
ax.plot([1, 2, 3], color = 'r', label = '1') # 한 문자로 색 지정.
ax.plot([2, 3, 4], color = 'coral', label = '2') # color name으로 색 지정.
ax.plot([3, 4, 5], color = '#000000', label = '3') # hex code로 색 지정.

ax.set_xticks([0,1,2]) # x축 범위 설정.
ax.set_xticklabels(['zero', 'one', 'two']) # x축의 값 변경.
ax.text(x=1, y=2, s='My text') # 특정 지점에 텍스트 추가.
ax.annotate(test='Annotation', xy=(1,2)) # 특정 지점에 주석 추가.
 										 # 화살표와 같은 추가 기능 가능
ax.set_title('Basic Plot') # 그래프의 제목.
fig.suptitle('fig') # 그래프 감싸는 figure의 제목.
ax.legend() # 범례(각 label)

plt.show()
profile
안녕하세요! 꾸준히 성장하고자하는 엔지니어 강면구입니다.

0개의 댓글