对不起,看起来我在处理 ERA5 数据的纬度时犯了一个错误。我应该使用纬度的值作为 x 轴,而不是将整个纬度数组传递给'plot'函数。以下是修正后的代码:

import xarray as xr
import geopandas as gpd
import matplotlib.pyplot as plt

# 加载 ERA5 数据
era5_dataset = xr.open_dataset(r'I:\ERA5\era5.nc')
tp_average = era5_dataset['tp_average']
tp_frequency = era5_dataset['tp_frequency']
tp_intensity = era5_dataset['tp_intensity']

# 逆序处理 ERA5 数据纬度
tp_average = tp_average.sel(lat=slice(None, None, -1))
tp_frequency = tp_frequency.sel(lat=slice(None, None, -1))
tp_intensity = tp_intensity.sel(lat=slice(None, None, -1))

# 创建 Figure 和 Axes 对象
fig, axes = plt.subplots(1, 3, figsize=(12, 5), sharey=True)

# 绘制 tp_average 变量的纬度变化曲线
axes[0].plot(tp_average.lat, tp_average.values[:, 0, 0])
axes[0].set_xlabel('Latitude', fontsize=12)
axes[0].set_ylabel('tp_average', fontsize=12)
axes[0].set_title('', fontsize=12)

# 绘制 tp_frequency 变量的纬度变化曲线
axes[1].plot(tp_frequency.lat, tp_frequency.values[:, 0, 0])
axes[1].set_xlabel('Latitude', fontsize=12)
axes[1].set_ylabel('tp_frequency', fontsize=12)
axes[1].set_title('', fontsize=12)

# 绘制 tp_intensity 变量的纬度变化曲线
axes[2].plot(tp_intensity.lat, tp_intensity.values[:, 0, 0])
axes[2].set_xlabel('Latitude', fontsize=12)
axes[2].set_ylabel('tp_intensity', fontsize=12)
axes[2].set_title('', fontsize=12)

plt.tight_layout()
plt.show()

这次我在'plot'函数中只传递了纬度的值作为 x 轴,而使用 '.values[:, 0, 0]' 获取了 tp_average、tp_frequency 和 tp_intensity 变量的值作为 y 轴。请注意,这里假设这三个变量的维度分别是 (lat, lon, time)。如果维度不同,请相应地修改索引的方式。

Python Matplotlib ValueError: 解决x和y维度问题

原文地址: http://www.cveoy.top/t/topic/byuj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录