matplotlib 如何修复我的风倒钩,使他们正确地绘制?

ep6jt1vc  于 2023-05-07  发布在  其他
关注(0)|答案(1)|浏览(97)

我一直在尝试使用Python在Map上绘制风倒钩,以进行研究。在浏览了一些在线指南后,我得出了这个结果,当风倒钩应该在其坐标位置绘制时,它们在Map的中心绘制(见图像链接)。
Wind barb issues
我使用的数据来自WRF模型运行。下面是我的代码:

# Get WRF variables
wspd_10m = getvar(ds, 'wspd_wdir10', units='ms-1')[0,:]
u10 = getvar(ds, 'U10')
v10 = getvar(ds, 'V10')
wrf_lats, wrf_lons = latlon_coords(wspd_10m)
wrf_lons = to_np(wrf_lons)
wrf_lats = to_np(wrf_lats)
barb_lons, barb_lats = latlon_coords(u10)
barb_lons = to_np(barb_lons)
barb_lats = to_np(barb_lats)

# Timestamp
timestamp = to_np(wspd_10m.Time).astype('M8[s]').astype('O').isoformat()
time = wspd_10m.Time
time_str = str(time.values)

cart_proj = get_cartopy(wspd_10m)
fig = plt.figure(figsize=(12,6))
ax = plt.axes(projection=cart_proj)
plt.contour(wrf_lons, wrf_lats, wspd_10m, colors='black', transform=ccrs.PlateCarree())
plt.contourf(wrf_lons, wrf_lats, wspd_10m, cmap=get_cmap('rainbow'), transform=ccrs.PlateCarree())
plt.barbs(barb_lons[::50,::50], barb_lats[::50,::50], to_np(u10[::50,::50]), to_np(v10[::50,::50]), length=6)

plot_background(ax)

plt.colorbar(ax=ax, shrink=0.98)

ax.set_extent([-104.35, -94.45, 36.37, 44.78])
ax.set_title('10m Wind Speed and Direction (m/s) ' + time_str[:19])

plt.show()
x6yk4ghg

x6yk4ghg1#

你只绘制了每50个点,你的数据太稀疏了!因此,你只能在你的域中间得到一个倒钩。
错误在this this命令中

plt.barbs(barb_lons[::50,::50], barb_lats[::50,::50], to_np(u10[::50,::50]), to_np(v10[::50,::50]), length=6)

将其更改为每5个点,在下面的i中进行实验(我缩短了向量)

i=5
plt.barbs(barb_lons[::i,::i], barb_lats[::i,::i], to_np(u10[::i,::i]), to_np(v10[::i,::i]),length=3)

相关问题