使用 python 从 netcdf 绘制风矢量

Plot winds vector from netcdf using python

我目前正在 atmospheric/climate 物理实习。我有来自 ERA5(哥白尼)的 netcdf 数据,我已经在不同的地图、图形等中绘制了这些数据…… 我需要用 cartopy 或除底图以外的任何其他东西绘制风矢量,但我无法弄清楚。

我脚本的这一部分现在看起来像这样:

import xarray as xr
from netCDF4 import Dataset as NetCDFFile 
import matplotlib.pyplot as plt
import numpy as np

import cartopy
import cartopy.feature as cfeat
import cartopy.crs as ccrs

ncw = xr.open_dataset('D:\Stage_IGE_CNRS\ERA5.nc')
nc2 = ncw.sel(time = slice('2016-03-06T06:00:00', '2016-03-31T18:00:00'), level = 1000).mean('time')
    
u = nc2['u']
v = nc2['v']
lon = nc2['longitude']
lat = nc2['latitude']

感谢您的帮助。

托马斯·V.

如果你想绘制风向量,你正在寻找来自matplotlib的quiver()(CartoPy只提供了一个projection-aware版本):

import cartopy.crs as ccrs
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, projection=ccrs.LambertConformal())
ax.quiver(lon, lat, u, v, transform=ccrs.PlateCarree())

如果你想要风倒钩,那么你会使用barbs()

我们通过了 ccrs.PlateCarree(),因为您的数据似乎在 lon/lat space 中。这意味着在这种情况下,您的风分量是 地球相对。当调用 quiver/barbs 时,cartopy 假定您的坐标(即 x/y 或 lon/lat)与您的向量分量(即 u/v)在同一坐标系中).