尝试创建屏蔽的时间片,但返回AttributeError:'努比·恩达雷当尝试执行iris p时,object没有属性“dim_coords”

2024-06-17 09:09:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图绘制一个等高线图,显示1860-1900年间的年溶解铁浓度,并试图排除高于一定量(0.000012)的所有数值,因为这些数值与某个特定区域有关,而这个区域正将我的数据丢弃。在

下面是我正在使用的脚本,每个部分都可以工作(在此之前,我当然导入了所有相关模块)。在

dissolved_iron = iris.load_cube('/home/em379/data/dis2/regriddedfiles/HadGEM2-ES_dfe_piControl_r1i1p1_regridded.nc')

dissolved_iron_timeslice = dissolved_iron.extract(iris.Constraint(time = lambda v: 1860 <= v <= 1900))

masked_dissolved_iron_timeslice = ma.masked_greater(dissolved_iron_timeslice.data, 0.000012)

qplt.contourf(masked_dissolved_iron_timeslice,25)

plt.show(block = False)

当我进入步骤qplt.contourf(masked_dissolved_iron_timeslice,25)时,Python返回错误:

^{pr2}$

Tags: 数据区域irisdata绘制数值浓度iron
1条回答
网友
1楼 · 发布于 2024-06-17 09:09:42

这个错误给了我们一个线索,告诉我们发生了什么:

AttributeError: 'MaskedArray' object has no attribute 'dim_coords'

我的意思是:“你想用MaskedArray做立方体的事”。在

所以,看看你的代码,确实是这样:

^{pr2}$

masked_dissolved_iron_timeslice现在是一个numpy掩码数组,而不是iris立方体。如果您只想查看数据,解决方案是从使用iris的打印功能改为使用matplotlib:

# Use plt, not qplt:
plt.contourf(masked_dissolved_iron_timeslice, 25)
plt.show()

当然,如果您需要更多的上下文(并维护多维数据集),可以使用以下内容更新现有多维数据集的数据:

dissolved_iron_timeslice = ...
dissolved_iron_timeslice.data = \
        ma.masked_greater(dissolved_iron_timeslice.data, 0.000012)

或者,如果不想修改现有多维数据集:

dissolved_iron_timeslice = ...
ma_iron_t = dissolved_iron_timeslice.copy()
ma_iron_t.data = \
        ma.masked_greater(dissolved_iron_timeslice.data, 0.000012)

有了这些立方体,您可以继续使用qplt并获得Iris提供的自动标记/colorbar/colormap/title优点。在

高温

相关问题 更多 >