欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Matplotlib绘制3D线框图和曲面图

程序员文章站 2022-03-02 08:18:53
...

有两种画网格数据的三维图非常重要,就是线框图和曲面图。它们都是将网格数据映射成三维曲面,得到的三维形状非常容易可视化。下面是一个线框图示例:

fig = plt.figure() 
ax = plt.axes(projection='3d') 
ax.plot_wireframe(X, Y, Z, color='black') 
ax.set_title('wireframe')

曲面图与线框图类似,只不过线框图的每个面都是由多边形构成的。只要增加一个配色方案来填充这些多边形,就可以感受到可视化图形表面的拓扑结构了:

ax = plt.axes(projection='3d') 
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, 
cmap='viridis', edgecolor='none') 
ax.set_title('surface')

需要注意的是,画曲面图需要二维数据,但可以不是直角坐标系(也可以用极坐标)。下面的示例创建了一个局部的极坐标网格(polar grid),当我们把它画成 surface3D 图形时,可以获得一种使用了切片的可视化效果:

r = np.linspace(0, 6, 20) 
theta = np.linspace(-0.9 * np.pi, 0.8 * np.pi, 40) 
r, theta = np.meshgrid(r, theta) 
X = r * np.sin(theta) 
Y = r * np.cos(theta) 
Z = f(X, Y) 
ax = plt.axes(projection='3d') 
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, 
cmap='viridis', edgecolor='none')