如何通过matplotlib去除plot_wireframe中的隐藏线?
1 个回答
4
我猜你说的“隐藏”是指在视图中被表面遮挡的线条,比如在图表中的“山丘”后面。
使用 plot_surface
而不是 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")
会生成这个图:
(你可能需要在第一次渲染后再次调用 set_edgecolors
或 set_facecolors
,因为 do_3d_projection
可能会覆盖这些值;我是在交互模式下运行的,还没有检查过。)