Matplotlib / Basemap以相等的距离绘制风倒钩

时间:2018-02-20 12:21:58

标签: python matplotlib matplotlib-basemap

我试图绘制风倒钩,这些倒钩相距100公里,相距100公里。我的数据是北半球(0.25度)。我试图在下面的代码中重现该问题:

import numpy as np
from mpl_toolkits.basemap import Basemap

lons,lats = np.meshgrid(np.linspace(-180,180,1440),np.linspace(0,90,360))


m = Basemap(projection='merc',resolution='l',llcrnrlat=33,llcrnrlon=-50,urcrnrlat=68,urcrnrlon=40)
m.drawcoastlines(linewidth=0.6)
X, Y = m(lons,lats)

UWind = np.ones((360,1440))
VWind = np.zeros((360,1440))

xx = np.arange(0, X.shape[1], 8)

yy = np.sin(np.deg2rad(np.linspace(0,90,45)))
yy = yy*360
yy[-1] = 359
yy = yy.astype(int)

points = np.meshgrid(yy, xx)

m.barbs(X[points], Y[points], UWind[points], VWind[points],length=4,linewidth=0.6,pivot='middle')


plt.show()

选择xx以每2度绘制一个倒钩(8个分辨率为0.25度的方框)。当然,在该投影中,纬度间距将随纬度增加而增加。所以,为了避免这种情况,我创造了yy随着罪而变化(以抵消这种情况)。它似乎没有做任何事情。非常欢迎任何帮助。这产生的当前情节不等于间距(从距离,而不是度,视角)。

enter image description here

1 个答案:

答案 0 :(得分:0)

替换m.barbs并在其上方添加一条换行符的新行:

uproj,vproj,xx,yy = m.transform_vector(UWind,VWind,np.linspace(-180,180,1440),np.linspace(0,90,360),31,31,returnxy=True,masked=True)
m.barbs(xx,yy,uproj,vproj,length=4,linewidth=0.6,pivot='middle')

参考:https://matplotlib.org/basemap/users/examples.html enter image description here

此处提供更多信息:https://matplotlib.org/basemap/api/basemap_api.html#module-mpl_toolkits.basemap