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

使用Python的xarray绘制netCDF降水数据集报错求助

正确绘制CORDEX降水netCDF数据集的方法

问题背景

我有一个平均降水的netCDF文件,对应的xarray.Dataset结构如下:

<xarray.Dataset>
Dimensions:  (rlat: 412, rlon: 424)
Coordinates:
    lat      (rlat, rlon) float64 21.99 22.03 22.07 22.11 ... 66.81 66.75 66.69
    lon      (rlat, rlon) float64 -10.06 -9.964 -9.864 ... 64.55 64.76 64.96
  * rlat     (rlat) float64 -23.38 -23.26 -23.16 -23.05 ... 21.61 21.73 21.83
  * rlon     (rlon) float64 -28.38 -28.26 -28.16 -28.05 ... 17.93 18.05 18.16
Data variables:
    pr       (rlat, rlon) float32 0.0001465 0.000145 ... 0.007854 0.004692
Attributes: (12/22)
    CDI:                            Climate Data Interface version 1.3.2
    Conventions:                    CF-1.6
    NCO:                            4.4.2
    CDO:                            Climate Data Operators version 1.3.2 (htt...
    contact:                        Fredrik Boberg, Danish Meteorological Ins...
    creation_date:                  2019-10-15 18:05:48
    ...                             ...
    rcm_version_id:                 v1
    project_id:                     CORDEX
    CORDEX_domain:                  EUR-11
    product:                        output
    tracking_id:                    hdl:21.14103/a879aaf7-ddeb-436a-96fd-b717...
    c3s_disclaimer:                 This data has been produced in the contex...

尝试直接调用out_ds.plot()时,出现错误:

Dataset.plot cannot be called directly. Use an explicit plot method, e.g. ds.plot.scatter(...)

解决方法

xarray的Dataset是多变量容器,无法直接调用plot(),必须明确指定要绘制的变量,并选择适配的绘图方法。针对你的降水空间数据,推荐以下几种方式:

方法1:最简调用(自动适配绘图类型)

直接指定pr变量调用plot,xarray会自动识别二维空间维度,默认生成伪彩图:

out_ds['pr'].plot()

方法2:自定义绘图样式(更灵活)

如果需要调整颜色、层级、坐标轴等,可显式指定绘图方法:

# 绘制填色图,自定义颜色层级、范围和标题
out_ds['pr'].plot.contourf(levels=20, vmin=0, vmax=0.008, cmap='Blues', title='EUR-11区域平均降水分布')

# 用真实经纬度(lat/lon)替代投影坐标(rlat/rlon)绘制伪彩图
out_ds['pr'].plot.pcolormesh(x='lon', y='lat', cmap='viridis')

方法3:结合matplotlib精细控制

如果需要更复杂的布局或样式,可搭配matplotlib手动调整:

import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=(10, 8))
# 绑定坐标轴,用经纬度展示降水分布
out_ds['pr'].plot.pcolormesh(ax=ax, x='lon', y='lat', cmap='YlGnBu', add_colorbar=True)
# 添加自定义标签和标题
ax.set_xlabel('经度')
ax.set_ylabel('纬度')
ax.set_title('CORDEX EUR-11区域平均降水')
# 优化布局
plt.tight_layout()
plt.show()

关键说明

报错的核心原因是Dataset包含多个潜在变量,xarray无法自动判断绘图目标,必须明确指定具体数据变量(如这里的pr)。对于二维空间分布数据,pcolormesh和contourf是最适合的绘图方法。

内容的提问来源于stack exchange,提问作者CoolMathematician

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:10:29