Matplotlib 三角形(plot_trisurf)颜色与网格

2 投票
1 回答
9722 浏览
提问于 2025-04-17 22:10

我正在尝试用plot_trisurf画一个3D表面,像这样:

xs = NP.array([ 0.00062  0.00661  0.02000  0.01569  0.00487  0.01784])
ys = NP.array([ 0.99999  0.66806  0.50798  0.61230  0.83209  0.86678])
zs = NP.array([-0.24255 -0.42215 -0.31854 -0.77384 -0.77906 -0.98167])

ax=fig.add_subplot(1,2,1, projection='3d')
ax.grid(True)
ax.plot_trisurf(xs, ys, zs, triangles = triangles, alpha = 0.0, color = 'grey')

这样做后我得到了这个图:

this plot

现在我遇到了两个问题:

  1. 三角形是黑色的,我能改变这个颜色吗?(在2D中用triplot可以通过color = 'grey'来实现,但在这里似乎不行。)
  2. (如果能看到的话)3D图的网格在三角形上留下了痕迹:看起来网格是在三角形上面显示的,而我(当然)希望三角形是在网格上面的。

1 个回答

4

把最后一行改成:

ax.plot_trisurf(xs, ys, zs, triangles=triangles, 
                color=(0,0,0,0), edgecolor='Gray')

你指定的 color 是用作 facecolor 的;如果你想让面是透明的,不要用 alpha=0,而是用 color=(r,g,b,0);这里的 0 是面颜色的透明度;这样就会得到透明的面。

撰写回答