如何为xarray生成的分面图添加海岸线与政治边界?
你需要搭配cartopy库实现地理要素的添加,利用xarray绘图返回的FacetGrid对象批量操作所有子图,修改后的可运行代码如下:
import pandas as pd import matplotlib.pyplot as plt import netCDF4 from netCDF4 import Dataset import xarray as xr # 新增cartopy相关依赖导入 import cartopy.crs as ccrs import cartopy.feature as cfeature ds = xr.open_mfdataset("C:path\*.nc",concat_dim='Time', combine='nested', compat='no_conflicts', preprocess=None, engine=None, data_vars='all', coords='all', parallel=False, join='outer', attrs_file=None,) C = ds.SNOWH # 绘图时指定子图投影,保存返回的FacetGrid对象 # 如果使用WRF默认兰伯特投影,可替换下方projection为对应自定义投影参数 g = C.plot( row='Time', col_wrap=5, subplot_kws={"projection": ccrs.PlateCarree()} ) # 遍历所有子图批量添加地理要素 for ax in g.axes.flat: ax.coastlines('50m', linewidth=0.8) ax.add_feature(cfeature.STATES.with_scale('50m'), linewidth=0.5) # 按需添加国界线可取消注释下行 # ax.add_feature(cfeature.BORDERS.with_scale('50m'), linewidth=0.5) plt.show()
如果你的WRF输出采用自定义兰伯特等角投影,可提前读取文件内的TRUELAT1、TRUELAT2、STAND_LON等投影参数构造对应的ccrs.LambertConformal投影实例,替换上述代码中的PlateCarree投影即可,避免地理要素出现错位。
内容的提问来源于stack exchange,提问作者MKM
相关产品推荐
相关产品推荐

