gpt4 book ai didi

python - 如何在 matplotlib 中的等高线图上绘制矢量场?

转载 作者:太空宇宙 更新时间:2023-11-03 10:55:53 25 4
gpt4 key购买 nike

我已经设法绘制了一个矢量场和一个等高线图,并想将它们显示在彼此之上,我环顾四周但不太了解图形和子图的工作原理。这是我的代码:

from matplotlib.pyplot import cm
import numpy as np
import matplotlib.pyplot as plt

# Vector Field
Y, X = np.mgrid[-2:2:20j, -2:2:20j]
U =(1 - 2*(X**2))*np.exp(-((X**2)+(Y**2)))
V = -2*X*Y*np.exp(-((X**2)+(Y**2)))
speed = np.sqrt(U**2 + V**2)
UN = U/speed
VN = V/speed
plt.quiver(X, Y, UN, VN,
color='Teal',
headlength=7)

plt.show()


# Countour Plot
X, Y = np.mgrid[-2:2:100j, -2:2:100j]
Z = X*np.exp(-(X**2 + Y**2))
cp = plt.contourf(X, Y, Z)
plt.colorbar(cp)

plt.show()

最佳答案

你有两个问题:

  • 在绘图之间调用 plt.show():这使它们分开,而不是一个叠加在另一个上
  • 在等高线图之前绘制箭袋图:因此,即使您删除了 show(),等高线图也会掩盖箭袋。

简单修复!

from matplotlib.pyplot import cm
import numpy as np
import matplotlib.pyplot as plt

# Contour Plot
X, Y = np.mgrid[-2:2:100j, -2:2:100j]
Z = X*np.exp(-(X**2 + Y**2))
cp = plt.contourf(X, Y, Z)
cb = plt.colorbar(cp)

# Vector Field
Y, X = np.mgrid[-2:2:20j, -2:2:20j]
U =(1 - 2*(X**2))*np.exp(-((X**2)+(Y**2)))
V = -2*X*Y*np.exp(-((X**2)+(Y**2)))
speed = np.sqrt(U**2 + V**2)
UN = U/speed
VN = V/speed
quiv = plt.quiver(X, Y, UN, VN, # assign to var
color='Teal',
headlength=7)

plt.show()

结果:

contour quiver plot

关于python - 如何在 matplotlib 中的等高线图上绘制矢量场?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40939821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com