Matplotlib는 파이썬에서 가장 널리 사용되는 데이터 시각화 라이브러리입니다.
데이터 시각화가 중요한 이유
데이터 시각화는 복잡한 수치 계산이나 숫자 데이터를 일일이 살펴보지 않고도 데이터 안에서 무슨 일이 일어나고 있는지 직관적으로 파악할 수 있게 해주는 핵심 단계입니다. 또한 정량적인 인사이트를 청중에게 효과적으로 전달하는 데 큰 도움이 됩니다.
Matplotlib는 2차원 플롯을 손쉽게 생성할 수 있으며, 객체 지향 API를 제공하여 만든 그래프를 파이썬 애플리케이션에 손쉽게 삽입할 수 있습니다. IPython 셸, Jupyter Notebook, Spyder IDE 등 다양한 환경에서 사용할 수 있습니다.
Matplotlib는 순수 파이썬으로 작성되었으며, 파이썬의 대표적인 수치 연산 패키지인 NumPy를 기반으로 만들어졌습니다.
Matplotlib 설치하기
Windows 환경에서는 아래 명령어로 간단히 설치할 수 있습니다.
pip install matplotlib
Matplotlib의 주요 의존성 패키지는 다음과 같습니다.
Python (3.4 버전 이상) NumPy Setuptools Pyparsing Libpng Pytz FreeType Six Cycler Dateutil
하나의 그림에 여러 플롯을 그려야 하는 경우
때로는 서로 다른 두 데이터 세트의 관계를 비교하며 분석해야 할 때가 있습니다. 예를 들어 시간 축을 공유하는 두 신호의 변화를 동시에 관찰하거나, 서로 다른 조건의 실험 결과를 나란히 비교하고 싶을 때가 그렇습니다. 이럴 때 하나의 figure 안에 여러 개의 플롯을 배치하면 훨씬 효율적인 분석이 가능합니다.
그럼 Matplotlib를 사용해 여러 플롯을 하나의 그림에 그리는 방법을 살펴보겠습니다.
예제 코드
import numpy as np
import matplotlib.pyplot as plt
x1_val = np.linspace(0.0, 6.0)
x2_val = np.linspace(0.0, 3.0)
y1_val = np.cos(2.3 * np.pi * x1_val) * np.exp(-x1_val)
y2_val = np.cos(2.4 * np.pi * x2_val)
fig, (ax1, ax2) = plt.subplots(2, 1)
fig.suptitle('Two plots')
ax1.plot(x1_val, y1_val, 'o-')
ax1.set_ylabel('Plot 1')
ax2.plot(x2_val, y2_val, '.-')
ax2.set_xlabel('x-axis')
ax2.set_ylabel('Plot 2')
plt.show()실행 결과
위 코드를 실행하면 하나의 창 안에 위아래로 두 개의 그래프가 함께 출력됩니다. 상단에는 감쇠하는 코사인 곡선이, 하단에는 일반 코사인 곡선이 표시됩니다.
코드 설명
패키지 임포트: 필요한 패키지(numpy, matplotlib.pyplot)를 가져오고, 코드 작성 편의를 위해 별칭(np, plt)을 지정합니다.
데이터 생성: NumPy 라이브러리의 linspace 함수를 사용해 x축 값을 생성하고, cos와 exp 함수를 활용해 서로 다른 두 데이터 세트를 만듭니다.
플롯 영역 생성: plt.subplots(2, 1) 함수를 사용해 세로로 2개의 서브플롯을 가진 하나의 figure를 생성합니다. 반환된 fig와 각 축 객체(ax1, ax2)를 언패킹하여 받습니다.
데이터 시각화: plot 함수를 사용해 각 축(ax1, ax2)에 데이터를 그립니다. 'o-'와 '.-' 같은 포맷 문자열로 마커와 선 스타일을 지정할 수 있습니다.
라벨 및 제목 설정: set_xlabel, set_ylabel 함수로 X축과 Y축의 라벨을 지정하고, suptitle 함수로 전체 그림의 제목을 추가합니다.
결과 출력: show 함수를 호출해 완성된 그래프를 화면에 표시합니다.
마무리
이처럼 Matplotlib의 subplots 함수를 활용하면 여러 개의 그래프를 하나의 그림에 깔끔하게 배치할 수 있습니다. 행렬 형태로 (2, 2), (3, 1) 등 다양한 레이아웃 구성도 가능하므로, 데이터 비교 분석에 적극적으로 활용해 보시기 바랍니다.