matplotlib 在同一图中绘制2D和3D等高线

soat7uwm  于 2023-05-01  发布在  其他
关注(0)|答案(1)|浏览(176)

是否可以在Python中绘制这样的2D和3D等高线图。

对不起,我不能提供太多细节的情节方面的数学方程和所有。

rsaldnfx

rsaldnfx1#

使用plot_surface沿着contour投影轮廓。它不限于Z平面;也可以对X和Y平面执行此操作。
在Matplotlib的官方文档中有一个例子: www.example.com
请注意,将轮廓移动到3D图的底部需要偏移。可以将偏移设置为等于y限制的下限。
我创建了一个示例:

import matplotlib.pyplot as plt
import numpy as np

x = y = np.arange(-3.0, 3.0, 0.02)
X, Y = np.meshgrid(x, y)
Z1 = np.exp(-X ** 2 - Y ** 2)
Z2 = np.exp(-(X - 1) ** 2 - (Y - 1) ** 2)
Z3 = np.exp(-(X + 1) ** 2 - (Y + 1) ** 2)
Z = (Z1 - Z2 - Z3) * 2

fig, ax = plt.subplots(subplot_kw={"projection": "3d"})

# draw surface plot
surf = ax.plot_surface(X, Y, Z, lw=0.1, cmap='coolwarm', edgecolor='k')

# add color bar
fig.colorbar(surf, shrink=0.5, aspect=10)

# projecting the contour with an offset
ax.contour(X, Y, Z, 20, zdir='z', offset=-2, cmap='coolwarm')

# match the lower bound of zlim to the offset
ax.set(zlim=(-2, 1))

plt.tight_layout()
plt.show()

相关问题