Python 用透视图绘制三维曲面和线
我试图画一条穿过三维表面的线,作为指示轴的方法。但是,这只会导致线完全绘制在曲面的顶部或下方——更改Python 用透视图绘制三维曲面和线,python,matplotlib,plot,3d,Python,Matplotlib,Plot,3d,我试图画一条穿过三维表面的线,作为指示轴的方法。但是,这只会导致线完全绘制在曲面的顶部或下方——更改zorder并不能解决这一问题 我要找的是线条看起来像是穿透了表面 我的代码和输出如下: fig = plt.figure(figsize=(9,9)) ax = plt.axes(projection='3d') ax.plot_surface(X,Z,Y, linewidth=0, cmap=cm.jet,
zorder
并不能解决这一问题
我要找的是线条看起来像是穿透了表面
我的代码和输出如下:
fig = plt.figure(figsize=(9,9))
ax = plt.axes(projection='3d')
ax.plot_surface(X,Z,Y,
linewidth=0,
cmap=cm.jet,
facecolors=cm.jet(r_3d/max(abs(r_3d.flatten()))),
edgecolor='none',
shade=False,
antialiased=False)
ax.plot([0,0],[-0.3,0.3],[0,0],linewidth=2,c='k')
在曲面顶部绘制的线示例
所需输出的手绘示例
我想你可以用
zorder
(示例)解决这个问题,尽管我还没有专门尝试过3d绘图zorder
更改打印顺序,或更改打印特定项目的深度。大的z顺序在顶部打印,小的z顺序在后面打印,因此,如果将3d项目的z顺序设置为1,并将线设置为z顺序为零,则应该可以工作 更改zorder
基本上是一个全有或全无的开关——当更改zorder
时,线条完全在曲面的前面或后面绘制。使用zorder
的想法是分割曲面:在背面绘制整个曲面,然后绘制线条,然后绘制离查看器最近的曲面的一半。但是我认为plot\u surface
不太喜欢画半个曲面。你也可以只画一个完整的3d曲面和两条线。也许@JohanC谢谢你!我认为MayaVi正是我在这里需要的,如果你把输入的X,Y,Z添加到曲面上,这将有助于我们重新创建输出。