Matplotlib - 7. 3D 그래프

2025. 1. 21. 15:14프로그래밍 (확장)/Python-Matplotlib

Matplotlib의 3D 그래프 기능은 데이터를 3차원으로 시각화하여 복잡한 데이터를 직관적으로 이해하는 데 도움을 줍니다. 3D 그래프를 생성하려면 mpl_toolkits.mplot3d에서 제공하는 Axes3D를 사용합니다. 이 섹션에서는 3D 그래프의 기본, 표면 그래프, 그리고 3D 등고선 그래프를 다룹니다.


7.1 3D 그래프 기본

Axes3D로 3D 축 생성

3D 그래프를 생성하려면 Axes3D를 사용하여 3D 축을 추가해야 합니다. 이후, plot3D나 scatter3D를 사용하여 데이터를 시각화합니다.

예제: 3D 선 그래프 (plot3D)

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 데이터 생성
z = np.linspace(0, 1, 100)
x = z * np.sin(25 * z)
y = z * np.cos(25 * z)

fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")

ax.plot3D(x, y, z, 'blue')
ax.set_title("3D Line Plot")
plt.show()

예제: 3D 산점도 (scatter3D)

# 데이터 생성
z = np.random.rand(100)
x = z * np.sin(25 * z)
y = z * np.cos(25 * z)

fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")

scatter = ax.scatter3D(x, y, z, c=z, cmap="viridis")
fig.colorbar(scatter, ax=ax, label="Color Intensity")
ax.set_title("3D Scatter Plot")
plt.show()

7.2 3D 표면 그래프

plot_surface()와 Wireframe 생성

3D 표면 그래프는 2D 데이터 배열을 사용하여 표면의 높이를 표현합니다. plot_surface()는 곡면을, plot_wireframe()은 와이어프레임을 그립니다.

예제: 표면 그래프 (plot_surface)

# 데이터 생성
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
x, y = np.meshgrid(x, y)
z = np.sin(np.sqrt(x**2 + y**2))

fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")

surface = ax.plot_surface(x, y, z, cmap="coolwarm", edgecolor="none")
fig.colorbar(surface, ax=ax, label="Height")
ax.set_title("3D Surface Plot")
plt.show()

예제: 와이어프레임 그래프 (plot_wireframe)

fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")

ax.plot_wireframe(x, y, z, color="black")
ax.set_title("3D Wireframe Plot")
plt.show()

7.3 3D 등고선 그래프

contour3D()와 contourf3D()

3D 등고선 그래프는 데이터의 특정 높이를 선으로 표현하며, contour3D()는 선 그래프를, contourf3D()는 채워진 등고선을 그립니다.

예제: 3D 등고선 그래프 (contour3D)

fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")

ax.contour3D(x, y, z, 50, cmap="viridis")
ax.set_title("3D Contour Plot")
plt.show()

예제: 채워진 3D 등고선 그래프 (contourf3D)

fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")

ax.contourf(x, y, z, 50, cmap="viridis", alpha=0.7)
ax.set_title("Filled 3D Contour Plot")
plt.show()

이러한 3D 그래프 기능은 복잡한 데이터 시각화에서 중요한 도구가 될 수 있습니다. 적절한 컬러맵과 축 설정을 활용하여 데이터를 명확히 표현할 수 있습니다.