我正在尝试使用basemap.barbs在地图上绘制风向图。
我尝试用简单的代码将其绘制为测试。
此代码未显示错误消息,即使我等待,图片也不会出来。
如果正在绘制图片,则即使等待很长时间也不会出来。
我认为似乎还有其他问题。
这是第一次使用Python绘制风场,所以我不成熟。
是因为数据分辨率高吗? (它的len(lon)是360,len(lat)是200)
还是另一回事?
import netCDF4 as nc
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap,addcyclic,shiftgrid
data=nc.Dataset('wind.nc','r')
lon=data.variables['XU_OCEAN'][:]
lat=data.variables['YU_OCEAN'][:]
time=data.variables['TIME1'][:]
uwind=data.variables['WIND_POWER_U'][:]
vwind=data.variables['WIND_POWER_V'][:]
uwind_DJF=[]
vwind_DJF=[]
for i in range(11,20*12+1,12):
uwind_DJF.append((uwind[i]+uwind[i+1]+uwind[i+2])/3)
vwind_DJF.append((vwind[i]+vwind[i+1]+vwind[i+2])/3)
uwind_DJF=np.mean(uwind_DJF,axis=0) ##shape is (200,360)
vwind_DJF=np.mean(vwind_DJF,axis=0) ##shape is (200,360)
fig=plt.figure(figsize=(12,9))
m=Basemap(resolution='l',projection='cyl',llcrnrlon=-90,llcrnrlat=30,urcrnrlon=80,urcrnrlat=70)
m.drawparallels(np.arange(-90,90,30),labels=[1,0,1,0],fontsize=10)
m.drawmeridians(np.arange(-180,180,45),labels=[0,0,0,1],fontsize=10)
m.drawcoastlines()
m.drawstates()
m.drawcountries()
lon2d,lat2d=np.meshgrid(lon,lat)
x,y=m(lon2d,lat2d)
m.barbs(x,y,uwind_DJF,vwind_DJF)
plt.show()