使用quiver()绘制风矢量

问题描述 投票:1回答:1

我想绘制风向图。我使用底图和此示例http://basemaptutorial.readthedocs.org/en/latest/plotting_data.html#quiver。在我的文件中,经度从0到360。我使用latlon = True将其移动到-180:180。但是,当我使用“点”定义点密度时,矢量仅绘制在我图的一半上。这是代码:当然,我使用以下代码:

m=Basemap(projection='cyl',llcrnrlat=30,urcrnrlat=80, llcrnrlon=-40,urcrnrlon=40,resolution='c')
latvar=nc.variables['lat']
lat=latvar[:]
lon=nc.variables['lon'][:]
X,Y=m(lon,lat)
lons,lats=meshgrid(lon,lat)
X4,Y4=m(lons,lats)
varU=ncU.variables['var1'][0,0,:,:]
varV=ncV.variables['var2'][0,0,:,:]
speed=np.sqrt(varUvarU+varVvarV)
yy=np.arange(0,len(Y[:]),3)
xx=np.arange(0,len(X[:]),3)
points=np.meshgrid(yy,xx)
m.quiver(X4[points],Y4[points],varU[points],varV[points],speed[points],cmap=cmap‌​,latlon=True)

有人可以帮我解决这个问题吗?谢谢。

python matplotlib-basemap
1个回答
1
投票

您正在进行很多事情,我不确定您是否需要。我已经尝试过对您的代码进行一些小的修改,并且可以正常工作:

import numpy 
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

lon  =NC.variables['lon'][:]  
lat  =NC.variables['lat'][:]

m=Basemap(projection='cyl',,llcrnrlat=30,urcrnrlat=80, llcrnrlon=-40,urcrnrlon=40,resolution='c')

lons,lats=numpy.meshgrid(lon,lat)
X4,Y4=m(lons,lats)

varU=NC.variables['var1'][0,0,:,:]
varV=NC.variables['var2'][0,0,:,:]

speed=numpy.sqrt(varU*varU+varV*varV)

yy=numpy.arange(0,len(lat),3)
xx=numpy.arange(0,len(lon),3)

points=numpy.meshgrid(yy,xx)

m.quiver(X4[points],Y4[points],varU[points],varV[points],speed[points],cmap=cmap,latlon=True)
plt.show()

# with all points for comparison
m.quiver(X4,Y4,varU,varV,speed,cmap=cmap,latlon=True)
plt.show()
© www.soinside.com 2019 - 2024. All rights reserved.