Matplotlib - 三维线框图
Matplotlib - 3D 线框图
Section titled “Matplotlib - 3D 线框图”3D 线框图 (wireframe plot) 通过绘制连接网格点 (grid points) 的线来可视化由 Z = f(X, Y) 定义的三维曲面 (surface)。它本质上展示了曲面的“骨架”或底层网格结构,有助于理解曲面的形态,而不会像填充曲面图那样可能存在遮挡 (occlusion) 问题。
与 Matplotlib 中的其他 3D 图类似,线框图需要一个 3D Axes 对象(通过设置 projection='3d' 创建),并且通常需要用于表示 X、Y 和 Z 坐标的 2D 数组(通常使用 numpy.meshgrid 创建)。
使用 ax.plot_wireframe() 方法来创建这些图。
ax.plot_wireframe(X, Y, Z, **kwargs)X,Y,Z:表示曲面网格点的 x, y, z 坐标的 2D 数组。color:指定所有线框线条颜色的单一值。linewidth:线框线条的宽度。linestyle:线框线条的样式(例如,'-','--',':')。rstride,cstride:整数。用于行和列的下采样步长 (downsampling stride)。对于密集网格,绘制每 n 条网格线可以简化图表并加快渲染速度(例如,rstride=2, cstride=2会绘制每隔一条的线条)。
示例:绘制正弦函数 (sinusoidal function) 的 3D 线框图。
import matplotlib.pyplot as pltimport numpy as np
# 1. 定义要绘制的函数def f(x, y): return np.sin(np.sqrt(x**2 + y**2))
# 2. 创建坐标向量和网格x_vec = np.linspace(-6, 6, 30)y_vec = np.linspace(-6, 6, 30)X, Y = np.meshgrid(x_vec, y_vec)
# 3. 计算 Z 值Z = f(X, Y)
# 4. 创建 Figure 和 3D Axesfig = plt.figure(figsize=(8, 6))ax = plt.axes(projection='3d')
# 5. 创建线框图# 如果需要,可以使用 rstride/cstride 来简化网格wireframe_plot = ax.plot_wireframe(X, Y, Z, color='black', # 线条颜色 linewidth=0.5, # 细线 rstride=1, # 绘制每 1 条行线 cstride=1 # 绘制每 1 条列线 )
# 6. 设置标签和标题ax.set_xlabel('X axis')ax.set_ylabel('Y axis')ax.set_zlabel('Z axis')ax.set_title('3D Wireframe Plot')
# 调整视角 (可选)ax.view_init(elev=40, azim=-45)
plt.show()此代码为函数 f(x, y) 生成 X、Y 和 Z 坐标网格,然后使用 ax.plot_wireframe() 方法绘制曲面的结构,线条颜色为黑色。rstride 和 cstride 参数控制线框网格的密度;值越大,网格越稀疏。线框图清晰地展示了曲面的底层网格和形状。