Matplotlib 고급

3D 표면 그래프

projection="3d", plot_surface, view_init으로 3D 표면과 와이어프레임을 그립니다.

소개

높이가 x와 y에 따라 정해지는 것처럼 두 입력에 따라 달라지는 데이터가 있습니다. projection="3d"로 만든 3D Axes는 이런 데이터를 표면으로 그릴 수 있습니다. view_init으로 카메라를 돌려 가장 잘 보이는 각도에서 볼 수 있습니다.

np.meshgrid는 두 1차원 범위를 2차원 격자 X와 Y로 바꾸므로 모든 (x, y) 쌍에 대해 Z를 한 번에 계산할 수 있습니다. plot_surface는 컬러맵으로 표면을 칠하고, plot_wireframe은 격자선만 그립니다. view_init(elev, azim)은 카메라 위치로, elev는 내려다보는 각도이고 azim은 수직축을 중심으로 한 회전입니다.

인터랙티브 시각화

elev와 azim으로 카메라를 돌리고, 표면과 와이어프레임을 바꾸고, 다른 함수도 써 보세요.

실행 가능한 Matplotlib 예제

Matplotlib
코드 실행 →
main.py
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-3, 3, 40)
y = np.linspace(-3, 3, 40)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X ** 2 + Y ** 2))

fig = plt.figure(figsize=(7, 5))
ax = fig.add_subplot(projection="3d")
ax.plot_surface(X, Y, Z, cmap="viridis")
ax.view_init(elev=30, azim=45)
ax.set_title("z = sin(sqrt(x² + y²))")
plt.show()
이 예제의 실행 버튼 만들기 이 코드가 그리는 차트
3D 표면 그래프