我想使用
请注意,我不是在询问与xy平面平行的等高线,而是图像中3D白色的等高线。
如果我按照朴素的方式绘制所有这些内容,我将看不到等高线(参见下面的代码和图像)。
matplotlib
绘制一幅具有颜色地图、线框和等高线的表面图。就像这样:![enter image description here](https://istack.dev59.com/uy6g1.webp)
如果我按照朴素的方式绘制所有这些内容,我将看不到等高线(参见下面的代码和图像)。
import numpy as np
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")
X, Y = np.mgrid[-1:1:30j, -1:1:30j]
Z = np.sin(np.pi*X)*np.sin(np.pi*Y)
ax.plot_surface(X, Y, Z, cmap="autumn_r", lw=0.5, rstride=1, cstride=1)
ax.contour(X, Y, Z, 10, lw=3, cmap="autumn_r", linestyles="solid", offset=-1)
ax.contour(X, Y, Z, 10, lw=3, colors="k", linestyles="solid")
plt.show()
如果我给表面上的面添加透明度,那么我就可以看到轮廓,但是它看起来很混乱(请参见下面的代码和图像)
import numpy as np
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")
X, Y = np.mgrid[-1:1:30j, -1:1:30j]
Z = np.sin(np.pi*X)*np.sin(np.pi*Y)
ax.plot_surface(X, Y, Z, cmap="autumn_r", lw=0.5, rstride=1, cstride=1, alpha=0.5)
ax.contour(X, Y, Z, 10, lw=3, cmap="autumn_r", linestyles="solid", offset=-1)
ax.contour(X, Y, Z, 10, lw=3, colors="k", linestyles="solid")
plt.show()
问题:是否有一种方法可以在matplotlib
中获得这个结果?阴影并不是必需的。