Matplotlib 绘制 3D 图形:让数据可视化更直观
·
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更适合中等规模数据可视化。通过调整rstride和cstride可优化曲面渲染效率。
更多推荐
所有评论(0)