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()
