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

如何在Cartopy中绘制高斯网格数据?解决xarray重塑后NaN问题

问题解决:重塑xarray数据后出现大量NaN的修复方法

你的问题出在错误地对已有网格维度的数据做了不必要的重塑操作,ARCO ERA5的单级别预报数据集本身已经自带latitude和longitude作为维度,不需要手动用MultiIndex和unstack来转换,这反而会破坏原有的网格结构,生成大量NaN。

修正后的代码

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

# 读取数据
sl_forecasts = xr.open_zarr(
    'gs://gcp-public-data-arco-era5/co/single-level-forecast.zarr/', 
    chunks={'time': 48},
    consolidated=True,
)

# 筛选目标时间、步长和变量,直接保留原维度
tp_data = sl_forecasts['tp'].sel(
    time='2021-02-27T06:00:00.000000000',
    step='3600000000000'
)

# 绘图
proj = ccrs.PlateCarree()
fig, ax = plt.subplots(figsize=(10, 8), subplot_kw=dict(projection=proj))

# 直接用xarray的plot方法,自动处理维度和投影
tp_data.plot.contourf(
    ax=ax,
    transform=proj,
    cmap='Blues',
    add_colorbar=True
)
ax.coastlines()
plt.show()

为什么原来的代码会产生大量NaN?

你创建的MultiIndex是将所有经度和纬度值一一配对,但原数据的latitude和longitude是两个独立的维度(形成二维网格)。当你执行unstack('values')时,会生成一个包含所有经纬度笛卡尔积的新网格,而原数据只有对应网格点的有效值,其余非对应位置自然被填充为NaN,导致绘图失败。

额外提示

xarray和Cartopy有很好的集成,直接使用xarray的plot方法可以省去手动提取values、lon、lat的步骤,同时自动处理坐标匹配,避免维度混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:43:17