nic*_*aro 10 python matplotlib surface mplot3d
我想使用色彩图,线框和轮廓绘制表面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()
Run Code Online (Sandbox Code Playgroud)
如果为表面刻面添加透明度,那么我可以看到轮廓,但它看起来非常混乱(请参阅下面的代码和图像)
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()
Run Code Online (Sandbox Code Playgroud)
问题:有没有办法获得这个结果matplotlib
?但是,阴影不是必需的.
显然这是一个错误,如果你尝试这个
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, rstride=1, cstride=1)
ax.contour(X, Y, Z+1, 10, lw=3, colors="k", linestyles="solid")
plt.show()
Run Code Online (Sandbox Code Playgroud)
旋转一下,你会看到轮廓线在不应该消失的时候消失了
我想你想设置轮廓的偏移:
ax.contour(X, Y, Z, 10, offset=-1, lw=3, colors="k", linestyles="solid", alpha=0.5)
Run Code Online (Sandbox Code Playgroud)
请参阅此示例了解更多信息:
http://matplotlib.org/examples/mplot3d/contour3d_demo3.html
这里的文档:
http://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html#contour-plots
offset:如果指定,则在垂直于 zdir 的平面中的该位置上绘制轮廓线的投影
请注意,zdir = 'z'
默认情况下,但您可以通过相应设置在 x 或 y 方向进行投影zdir
。
归档时间: |
|
查看次数: |
15834 次 |
最近记录: |