用matplotlib绘制风倒钩的垂直剖面

时间:2018-02-26 15:48:21

标签: python matplotlib

我试图使用matplotlib在垂直剖面中绘制两个水平风分量u和v。接下来,我想将风倒钩绘制在相同的高度,以便两个图共享y轴。我想使用sharey-option,这样我就可以使用z的值更容易地控制ylimits。

到目前为止,我做到了这一点:

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

u = np.array([1,2,3,5,7,7,7,7])
v = np.array([-1,-1,-1,1,3,3,3,3])
z = np.array([2,10,50,100,200,300,400,500])

fig,ax = plt.subplots(figsize=[15,8],ncols=2,sharey=True)
ax[0].plot(u,z,label='U-component')
ax[0].plot(v,z,label='V-component')
ax[0].axvline(0,color='k')
ax[0].legend(loc=4)

Xq,Yq = np.meshgrid(1,np.arange(0,u.shape[0]))
ax[1].barbs(Xq,Yq,u,v)

plt.show()

给出了以下情节:

image with sharey-option

正如你所看到的,倒钩函数将风倒钩绘制在数组的索引上,但是我想将它映射到我的z数组(就像我对u和v数组所做的那样)。看起来应该是这样的:

without sharey-option

在这里,我只是关闭了sharey-option以显示我想拥有的内容。但正如我所提到的,使用此选项,我无法使用z值设置倒钩图的ylimits。

任何人都可以帮我完成这项工作吗?

我希望自己明确表示,如果没有,请帮助我改进我的问题。代码应该作为一个最小的工作示例。

提前致谢

菲利普

1 个答案:

答案 0 :(得分:0)

不确定我是否理解正确,但如果我这样做,那么您应该尝试将meshgrid行更改为:

Xq,Yq = np.meshgrid(1, z)

将倒钩原点设置为(1,z)坐标。