Matplotlib는 파이썬에서 가장 널리 사용되는 데이터 시각화 라이브러리 중 하나입니다. 데이터 시각화는 숫자를 일일이 살펴보거나 복잡한 계산을 수행하지 않고도 데이터 안에서 무슨 일이 일어나고 있는지 직관적으로 파악할 수 있게 해주는 핵심 과정입니다. 또한 정량적인 인사이트를 청중에게 효과적으로 전달하는 데 큰 도움이 됩니다.
Matplotlib는 데이터를 기반으로 2차원 플롯을 생성하는 데 사용됩니다. 객체 지향 API를 제공하기 때문에 생성된 그래프를 파이썬 애플리케이션에 손쉽게 내장할 수 있습니다. IPython 셸, Jupyter Notebook, Spyder IDE 등 다양한 환경에서 함께 사용할 수 있으며, 숫자 연산 패키지인 NumPy를 기반으로 만들어졌습니다.
Matplotlib 설치 방법
Windows 환경에서는 아래 명령어를 통해 간단히 설치할 수 있습니다.
pip install matplotlib
Matplotlib가 정상적으로 동작하려면 다음과 같은 의존성 패키지들이 필요합니다.
Python (3.4 이상) NumPy Setuptools Pyparsing Libpng Pytz FreeType Six Cycler Dateutil
하나의 그래프에 3개의 데이터 세트 플롯하기
이제 Matplotlib를 활용해 하나의 그래프 위에 서로 다른 3개의 데이터 세트를 함께 그리는 방법을 살펴보겠습니다. 아래 예제에서는 선형(linear), 이차(quadratic), 삼차(cubic) 함수를 각각 하나의 축(ax)에 겹쳐서 그립니다.
예제 코드
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
x = np.linspace(0, 2, 100)
fig, ax = plt.subplots()
ax.plot(x, x, label='linear')
ax.plot(x, x**2, label='quadratic')
ax.plot(x, x**3, label='cubic')
ax.set_xlabel('x label name')
ax.set_ylabel('y label name')
ax.set_title("My Plot")
ax.legend()
plt.show()코드 설명
필요한 패키지(matplotlib.pyplot, numpy)를 임포트하고, 사용 편의성을 위해 별칭(plt, np)을 지정합니다.
'figure' 함수를 사용해 빈 그림(figure) 객체를 생성합니다.
NumPy의 'linspace' 함수를 이용해 0부터 2까지 100개의 균일한 간격의 x축 데이터를 생성합니다.
'subplots' 함수를 호출해 그래프와 축(ax) 객체를 준비합니다.
'plot' 함수를 세 번 호출하여 각각 선형(x), 이차(x²), 삼차(x³) 곡선을 동일한 축에 그립니다. 각 곡선에는 범례에 표시될 label을 지정합니다.
'set_xlabel'과 'set_ylabel'로 X축과 Y축의 라벨을 설정합니다.
'set_title'로 그래프 제목을 지정하고, 'legend()'를 호출해 각 데이터 세트를 구분할 수 있는 범례를 화면에 표시합니다.
이처럼 동일한 축 객체(ax)에 'plot' 함수를 여러 번 호출하기만 하면, 여러 개의 데이터 세트를 하나의 그래프에 손쉽게 겹쳐서 비교할 수 있습니다. 범례(legend)를 함께 표시하면 어떤 곡선이 어떤 데이터에 해당하는지 한눈에 파악할 수 있어 가독성이 크게 향상됩니다.