Matplotlib 绘制 3D 图形指南

1. 基础环境配置
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D  # 3D绘图核心模块

2. 创建 3D 坐标系
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')  # 关键步骤:声明3D投影

3. 常见 3D 图形绘制
3.1 曲面图 (Surface Plot)
# 生成数据
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))  # 锥形波函数

# 绘制曲面
surf = ax.plot_surface(X, Y, Z, cmap='viridis', alpha=0.8)
fig.colorbar(surf)  # 添加颜色条

3.2 散点图 (Scatter Plot)
# 生成随机数据
x = np.random.rand(100)
y = np.random.rand(100)
z = np.random.rand(100)

# 绘制散点
ax.scatter(x, y, z, c=z, cmap='plasma', s=50)

3.3 线框图 (Wireframe Plot)
ax.plot_wireframe(X, Y, Z, color='blue', linewidth=0.5, rstride=5, cstride=5)

4. 高级定制技巧
4.1 视角控制
ax.view_init(elev=30, azim=45)  # elev: 俯仰角, azim: 方位角

4.2 坐标轴标签
ax.set_xlabel('X轴', fontsize=12)
ax.set_ylabel('Y轴', fontsize=12)
ax.set_zlabel('Z轴', fontsize=12)

4.3 标题与网格
ax.set_title("3D曲面可视化", fontsize=14)
ax.grid(True, linestyle='--', alpha=0.4)

5. 完整示例
# 创建数据
theta = np.linspace(0, 2*np.pi, 100)
z = np.linspace(0, 5, 100)
r = z**2 + 1
x = r * np.sin(theta)
y = r * np.cos(theta)

# 绘图
fig = plt.figure(figsize=(10, 7))
ax = fig.add_subplot(111, projection='3d')
ax.plot(x, y, z, 'r-', linewidth=2, label='螺旋线')

# 定制化
ax.legend()
ax.set_box_aspect([1,1,1])  # 等比例坐标轴
plt.tight_layout()
plt.show()

6. 输出效果优化
  • 分辨率调整plt.savefig('3d_plot.png', dpi=300)
  • 交互模式%matplotlib notebook (Jupyter环境)
  • 透明度控制alpha参数(0=透明,1=不透明)

关键提示:复杂3D图形建议使用mayavi库提升性能,Matplotlib更适合中等规模数据可视化。通过调整rstridecstride可优化曲面渲染效率。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐