如何通过matplotlib删除plot_wireframe中的隐藏线?

时间:2014-07-27 00:30:23

标签: python graphics matplotlib

python 2.x中的matplotlib是否支持隐藏行删除?

我如何自己实施?

这是另一个在此解决的帖子的问题: How to obtain 3D colored surface via Python?

1 个答案:

答案 0 :(得分:2)

我假设“隐藏”是指视图中表面贴片后面的线条,例如图中“山丘”后面的线条。

使用plot_surface代替plot_wireframe

plot_surface vs plot_wireframe

我用过

plot_wireframe(X, Y, Z, rstride=10, cstride=10)

创建第一个和

plot_surface(X, Y, Z, rstride=10, cstride=10, color="white", shade=False, edgecolor="blue")

创建第二个图。

如果要将其与边缘的颜色映射相结合,则必须使用一些内部结构。如果您使用cmap参数对曲面进行颜色映射,则Poly3DCollection.do_3d_projection的源代码最终会调用to_rgba(self._A)来计算面部颜色。将其重新映射为边缘颜色,你可以去:

surf = ax.plot_surface(X, Y, Z, rstride=2, cstride=2, shade=False, cmap="jet", linewidth=1)
surf.set_edgecolors(surf.to_rgba(surf._A))
surf.set_facecolors("white")

产生这个情节:

Final plot

(您可能需要在第一次渲染过程后再次调用set_edgecolors / set_facecolors,因为do_3d_projection可能会覆盖这些值;我在交互模式下运行它并且没有检查过。)< / p>