Python Matplotlib:在三维曲面顶部绘制三维曲线

Python Matplotlib:在三维曲面顶部绘制三维曲线,python,matplotlib,surface,Python,Matplotlib,Surface,我试图在Matplotlib中的3D曲面顶部绘制3D曲线,但当曲线位于曲面前面时,它几乎不可见(曲线是单位圆的图像): 应该有一条绿色曲线在表面上方浮动一个单位。 如果从侧面观察,可以看到曲线中不在曲面前面的部分(曲面中心顶点左侧和右侧的小回路): 有什么办法可以让它工作吗?我尝试过白色表面,有无抗锯齿,但都没有效果 这是我正在使用的代码: from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt from

我试图在Matplotlib中的3D曲面顶部绘制3D曲线,但当曲线位于曲面前面时,它几乎不可见(曲线是单位圆的图像): 应该有一条绿色曲线在表面上方浮动一个单位。
如果从侧面观察,可以看到曲线中不在曲面前面的部分(曲面中心顶点左侧和右侧的小回路):

有什么办法可以让它工作吗?我尝试过白色表面,有无抗锯齿,但都没有效果

这是我正在使用的代码:

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

fig = plt.figure()
ax = fig.gca(projection='3d')

N = 5

# Make H surface
X = np.linspace(-1.25, 1.25, 1024)
Y = np.linspace(-1.25, 1.25, 1024)
X, Y = np.meshgrid(X, Y)
Z = 1/N * np.abs(1 - (X + Y*1j)**-N) / np.abs(1 - 1/(X + Y*1j))
Z = 20 * np.log10(Z)

# Make the image of the unit circle
omega = np.linspace(0, 2*np.pi, 2048)
circ_X = np.cos(omega)
circ_Y = np.sin(omega)
circ_Z = 1/N * np.sin(N*omega/2) / np.sin(omega/2)
circ_Z = 10 * np.log10(circ_Z**2) + 1

# Plot the H surface and the unit circle
surf = ax.plot_surface(X, Y, Z, cmap=cm.plasma, linewidth=0, antialiased=True)
circ = ax.plot(circ_X, circ_Y, circ_Z, color='green')

ax.set_zlim(-40, 10)
plt.show()

为了回答我自己的问题,我最终使用了:

#/usr/bin/env蟒蛇3
将mayavi.mlab导入为mlab
将numpy作为np导入
导入操作系统
script\u dir=os.path.dirname(os.path.realpath(\u文件\u))
N=5
最大值=15
最小值=-60
#制作H曲面
X=np.linspace(-1.5,1.51024*5)
Y=np.linspace(-1.5,1.51024*5)
十、 Y=np.meshgrid(X,Y)
z=X+Y*1j
Z=1/N*np.abs(1-Z**-N)/np.abs(1-1/Z)
Z=20*np.log10(Z)
Z[np.逻辑_或(Z>max,Zmax,循环Z

要了解更多有关此问题和可能的解决方法,可能会很有趣。