不久前我在Mathematica中创建了一个3D等高线图,这次我尝试用Python来做。首先让我向大家展示一下我得到的结果:
数学软件:
巨蟒:
现在,我希望前景(山丘的可见部分)隐藏背景(不可见部分)。在Python版本中,看起来就像你在下面看着这些山。我不知道如何修复它,使它更像Mathematica版本(我不关心颜色,我实际上更喜欢Python版本中的颜色)。以下是代码:
import numpy as np
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
plt.rcParams["lines.linewidth"]=0.5
fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")
X, Y = np.mgrid[-3:3:30j, -3:3:30j]
Z= np.exp(-(abs(X)**2 + abs(Y)**2)) + 0.8*np.exp(-4*((abs(X-1.5))**4.2 + (abs(Y-1.4))**4.2))
ax.plot_surface(X, Y, Z, cmap="coolwarm", rstride=1, cstride=1, alpha=0.2)
# ax.contourf(X, Y, Z, levels=60, colors="k", linestyles="solid", alpha=0.9, antialiased=True)
ax.contour(X, Y, Z, levels=60, linestyles="solid", alpha=0.9, antialiased=True)
plt.show()
plt.savefig('contour3D.png', dpi=300)
2条答案
按热度按时间0s0u357o1#
Matplotlib在3D绘图方面并不是很好。你降低了表面的不透明度,使轮廓线可见。恐怕你所要求的是不可能用matplotlib实现的。
如果你要尝试不同的库呢?例如Plotly或Mayavi?
以下是一些资源:
368yc8dk2#
我认为解决方案是简单地将alpha设置为1,因为使曲面透明可以显示其背后的背景。
new graph