Matplotlib는 파이썬에서 가장 널리 사용되는 데이터 시각화 라이브러리입니다. 데이터 시각화는 복잡한 수치 계산 없이도 데이터 안에서 무슨 일이 일어나고 있는지 직관적으로 파악할 수 있게 해주는 핵심 과정이며, 정량적인 인사이트를 청중에게 효과적으로 전달하는 데 큰 도움이 됩니다.
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차원 등고선 플롯이란?
3차원 플롯은 데이터 포인트의 x축, y축, z축을 동시에 시각화할 때 사용됩니다. 특히 머신러닝 분야에서는 경사 하강법(Gradient Descent)이 어떻게 동작하는지 이해하거나, 알고리즘의 계수에 대한 최적값을 찾는 과정을 시각적으로 확인할 때 유용하게 활용됩니다.
그럼 Matplotlib를 사용해 3차원 등고선 플롯을 만드는 방법을 살펴보겠습니다.
예제 코드
from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt
def fun(x, y):
return np.sin(np.sqrt(x ** 2 + y ** 2))
x = np.linspace(-5, 5, 30)
y = np.linspace(-5, 5, 30)
X, Y = np.meshgrid(x, y)
Z = fun(X, Y)
fig = plt.figure()
ax = plt.axes(projection='3d')
ax.contour3D(X, Y, Z, 50, cmap='binary')
ax.set_ylabel("Y-axis")
ax.set_xlabel("X-axis")
ax.set_zlabel("Z-axis")
ax.set_title('A sample 3D contour plot')
plt.show()실행 결과

코드 상세 설명
패키지 임포트: 필요한 라이브러리들을 가져오고, 코드 작성의 편의를 위해 별칭(alias)을 지정합니다. 3차원 플롯을 위해
mplot3d모듈을 반드시 임포트해야 합니다.데이터 생성 함수 정의: 두 개의 변수를 받아
sin함수를 이용해 데이터를 생성하는fun함수를 정의합니다.NumPy로 값 배열 생성:
np.linspace로 -5부터 5까지 균일한 간격의 30개 값을 만들고,np.meshgrid를 통해 x, y 좌표의 격자(grid)를 구성합니다.빈 figure 생성:
plt.figure()함수로 그래프가 그려질 도화지 역할을 하는 빈 figure 객체를 만듭니다.3D 축 생성:
plt.axes(projection='3d')처럼 projection 옵션을 지정하여 3차원 축을 생성합니다.등고선 그리기:
contour3D메서드를 사용해 앞서 만든 데이터를 3차원 등고선 플롯으로 시각화합니다. 여기서 세 번째 인자인 50은 등고선의 개수(level)를 의미하며, 이 값을 늘리면 더 촘촘하고 부드러운 등고선을 얻을 수 있습니다.라벨 및 제목 설정:
set_xlabel,set_ylabel,set_zlabel,set_title함수를 사용해 X축, Y축, Z축의 라벨과 그래프 제목을 지정합니다.그래프 출력: 마지막으로
show함수를 호출해 화면에 그래프를 표시합니다.
마무리
이처럼 Matplotlib와 mplot3d 툴킷을 활용하면 몇 줄의 코드만으로도 데이터를 입체적으로 분석할 수 있는 3차원 등고선 플롯을 손쉽게 만들 수 있습니다. cmap 옵션을 변경하거나 등고선 개수를 조절하면서 다양한 스타일의 시각화를 시도해 보시기 바랍니다.