MetPy绘制Skew-T图时露点Td计算的代码修正求助
修正MetPy绘制Skew-T图时的露点温度计算错误
错误原因分析
你代码中计算Td的第二行是完全错误的:
Td = df[Td.values] * units.degC
T和Dewpt已经是带有MetPy单位的数值数组,执行T - Dewpt后得到的Td本身就是带degC单位的有效数组,无需再从DataFrame中索引。- 用
Td.values(纯数值数组)去索引DataFrame的列是逻辑错误,DataFrame的列名是字符串(如temperature、dewpt),和数值数组不匹配,这直接导致了维度或索引错误。
正确的Td计算方式
只需要保留差值计算的语句即可,删除错误的索引操作:
# 通过气温T减去露点差dewpt,得到实际露点温度Td Td = T - Dewpt
这个Td是带degC单位的数组,和T、p等变量格式完全兼容,可以直接用于后续的绘图和气象计算。
修正后的核心代码片段
# 从数据集中提取变量并赋予单位 p = df['pressure'].values * units.hPa T = df['temperature'].values * units.degC Dewpt = df['dewpt'].values * units.degC wind_speed = df['speed'].values * units.meter/units.second wind_dir = df['direction'].values * units.degrees u, v = mpcalc.wind_components(wind_speed, wind_dir) # 正确计算露点温度 Td = T - Dewpt print(Td)
验证说明
修正后,Td会输出带单位的露点温度数组,后续的Skew-T绘图、LCL计算、CAPE/CIN填充等操作都能正常执行,不会再出现维度或属性缺失的错误。
内容的提问来源于stack exchange,提问作者Marina
相关产品推荐
相关产品推荐

