【发布时间】:2016-05-28 11:47:50
【问题描述】:
我想使用matplotlib 绘制带有颜色图、线框和轮廓的曲面。像这样的:
请注意,我不是在询问与 xy 平行的平面中的轮廓,而是图像中的 3D 和白色轮廓。
如果我以天真的方式绘制所有这些东西,我将看不到轮廓(请参阅下面的代码和图片)。
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 中获得这个结果?不过,阴影不是必需的。
【问题讨论】:
-
如果将轮廓的 alpha 设置为一个较小的值,它可能看起来不那么混乱。
标签: python matplotlib surface mplot3d