Matplotlib mplot3d:在`plot_surface()下隐藏线图`plot()``

Matplotlib mplot3d:在`plot_surface()下隐藏线图`plot()``,matplotlib,mplot3d,Matplotlib,Mplot3d,编辑:我在这里描述的问题在当前版本的matplotlib(2.1.1,2019年9月10日编辑)中不再出现:最肯定的是,这是一个自那时以来已被修复的错误 我想要一个线条图(用Axis.plot())绘制),它被Axis.plot\u surface()生成的曲面部分覆盖。我写了以下脚本: import numpy as np from matplotlib import pyplot as plt from mpl_toolkits.mplot3d import Axes3D resoluti

编辑:我在这里描述的问题在当前版本的matplotlib(2.1.1,2019年9月10日编辑)中不再出现:最肯定的是,这是一个自那时以来已被修复的错误

我想要一个线条图(用
Axis.plot()
)绘制),它被
Axis.plot\u surface()
生成的曲面部分覆盖。我写了以下脚本:

import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

resolution = 100
ax = plt.gca(projection="3d")
x, y = np.meshgrid( np.linspace(-1.0, 1.0, resolution) ,
                    np.linspace(-1.0, 1.0, resolution) )
phi = (1.0 - x)*(1.0 - y) / 4.0
ax.plot([-1.0,1.0], [-1.0,1.0], [0.0,0.0], color="red")
ax.plot_surface(x, y, phi, linewidth=0, antialiased=False)
plt.show()
并确保在调用
plot\u surface()
之前先调用
plot()
。尽管如此,直线图似乎始终具有最高的“zindex”,并在曲面上绘制。以下是我得到的:

以下是我想要的:

我如何实现这个结果?(不使用Gimp…

我改变了

ax.plot_surface(x, y, phi, linewidth=0, antialiased=False)
与:

然后我看到了整个红线 我变了

ax.plot_surface(x, y, phi, linewidth=0, antialiased=False)
与:

然后我看到了整个红线

上次问这个问题时,我找不到这个问题,但是IIRC没有自己的光线跟踪器,它可以计算出从您的特定视点可以看到多少线。这是否意味着这是一个缺失的功能或缺陷?对于一般情况,这是一个缺失的功能。看见对于这种只有一条直线和一个曲面的特殊情况,可能还有一些调整绘图顺序的解决方法,或者。上次问这个问题时,我找不到这个问题,但是IIRC没有你自己的光线跟踪器是没有办法的,光线跟踪器可以计算出从你的特定视角看那条线应该有多少是可见的。这是否意味着这是一个缺失的功能或者一个bug?对于一般情况来说,这是一个缺失的功能。看见对于这种只有一条直线和一个曲面的特殊情况,可能还有一些调整绘图顺序或曲面的解决方法。目标是看不到红线,因为它位于曲面下方。但是matplotlib展示了整个过程。话虽如此,我还是再次运行了原始帖子中的代码……它成功了!最明显的是,matplotlib的当前版本和我在撰写原始文章时的版本之间存在一个错误。目标是看不到红线,因为它位于表面之下。但是matplotlib展示了整个过程。话虽如此,我还是再次运行了原始帖子中的代码……它成功了!最肯定的是,matplotlib的当前版本与我撰写原始文章时的版本之间修复了一个bug。