You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 14:06:03