泰勒图绘制避坑指南:你的观测数据放对位置了吗?详解skill_metrics参数配置

张开发
2026/4/11 1:15:11 15 分钟阅读

分享文章

泰勒图绘制避坑指南:你的观测数据放对位置了吗?详解skill_metrics参数配置
泰勒图绘制避坑指南观测数据位置与样式定制的深度解析泰勒图作为模式评估的黄金标准工具能直观展示模型预测与观测数据在相关系数、标准差和均方根误差三个维度的匹配程度。但许多用户在初次接触skill_metrics库时往往会在数据排列顺序这个看似简单的环节栽跟头——输入数组的第一个元素必须是观测数据这个细节一旦忽略整个图形解读将完全失真。1. 观测数据位置泰勒图的核心逻辑与常见陷阱泰勒图的数学本质是将三维评估指标R、STD、RMSE投影到二维极坐标上。观测数据作为参考基准必须位于所有数组的首位这是由泰勒图的底层数学原理决定的参考系原点观测数据的标准差(STD)定义了极坐标半径的单位长度相关系数基准观测数据与自身的相关系数(R)必须为1误差基准观测数据与自身的均方根误差(RMSE)必须为0典型错误案例某用户在对比5个气候模型时将观测数据放在数组末尾导致图形出现以下异常# 错误示例观测数据不在首位 std [model1_std, model2_std, obs_std] # 错误顺序 r [model1_r, model2_r, 1] # 错误顺序 rmse [model1_rmse, model2_rmse, 0] # 错误顺序正确做法应该是# 正确顺序观测数据必须为首元素 std [obs_std, model1_std, model2_std] # 首位是观测值 r [1, model1_r, model2_r] # 首位是1 rmse [0, model1_rmse, model2_rmse] # 首位是0关键验证点绘制完成后检查观测点是否位于x轴最右侧θ0的位置且与原点距离等于其标准差。2. 参数配置全解从基础绘图到高级定制sm.taylor_diagram函数提供丰富的样式控制参数可分为三大类2.1 数据标记参数参数名作用域示例值备注markerlabel所有数据点[Obs,M1]需与数据顺序严格对应markersize标记尺寸5-10期刊要求通常≥6ptmarkerlegend图例显示on/off模型较多时建议关闭2.2 视觉样式参数通过以下三组参数控制图形元素外观# 相关系数弧线样式 colCORk # 颜色k黑色 styleCOR-. # 线型-.点划线 widthCOR1 # 线宽磅值 # 标准差网格样式 colSTD#808080 # 灰色 styleSTD: # 虚线 widthSTD0.8 # 细线 # RMSE等高线样式 colRMSred # 醒目颜色 styleRMS-- # 短划线 widthRMS1.5 # 加粗2.3 观测值特殊样式观测数据可单独设置视觉强调colOBSblue # 区别于其他点 styleOBS-- # 独特线型 widthOBS2 # 加粗显示学术图表优化建议使用CMYK色彩空间如colOBS#006BA4确保印刷效果线宽至少0.5pt避免缩放时消失离散模型建议用markero连续场用markers3. 进阶技巧多模型对比与技能评分当评估多个模型时泰勒图可能出现点簇重叠问题。此时可采用以下策略3.1 分层次可视化# 第一组物理模型 sm.taylor_diagram(std_phys, rmse_phys, r_phys, colCORb, colRMSb, colSTDb) # 第二组统计模型叠加绘图 sm.taylor_diagram(std_stat, rmse_stat, r_stat, colCORr, colRMSr, colSTDr, overlayon) # 关键参数3.2 泰勒技能评分(TSS)计算TSS综合评估模型性能def taylor_skill_score(r, std_ratio): 计算泰勒技能分数 参数 r - 相关系数 std_ratio - 模型标准差/观测标准差 返回 TSS ∈ [0,1]越接近1性能越好 return (4*(1r)) / ((std_ratio 1/std_ratio)**2 * (11))典型应用场景模型排序TSS 0.8为优秀迭代优化比较不同参数方案的TSS提升不确定性分析通过TSS分布评估稳健性4. 实战案例气候模式评估全流程以评估6个CMIP6气候模型为例完整流程如下4.1 数据准备阶段# 读取观测与模型数据 obs pd.read_csv(obs.csv)[temp] models { CanESM5: pd.read_csv(CanESM5.csv)[temp], MIROC6: pd.read_csv(MIROC6.csv)[temp], # ...其他4个模型 } # 计算统计量 stats {Obs: {std: obs.std(), r: 1, rmse: 0}} for name, data in models.items(): stats[name] { std: data.std(), r: np.corrcoef(obs, data)[0,1], rmse: np.sqrt(mean_squared_error(obs, data)) }4.2 可视化优化方案针对期刊投稿的特殊要求plt.figure(figsize(5,5), dpi300) # 方形画布 sm.taylor_diagram( [v[std] for v in stats.values()], [v[rmse] for v in stats.values()], [v[r] for v in stats.values()], markerlabellist(stats.keys()), markersize7, colOBS#CC0000, # 期刊品牌色 widthOBS1.5, styleSTD:, colSTD#555555, tickRMS[0.5, 1, 1.5], # 自定义RMSE刻度 title ) plt.savefig(taylor.pdf, bbox_inchestight, formatpdf)4.3 常见问题排查表异常现象可能原因解决方案观测点不在x轴数据顺序错误检查数组首位是否为观测值RMSE圆环不完整画布比例非正方形设置figsize(5,5)标签重叠模型过多/标记过大调整markersize或使用图例印刷后颜色失真使用RGB色彩转换为CMYK模式标准差刻度不均匀自动刻度适应异常手动设置tickSTD参数在最近一次期刊投稿中审稿人特别指出泰勒图的观测数据标记不够醒目。通过调整colOBS为Pantone 485C色#DA291C并将线宽增加到2pt最终图形在黑白打印和彩色电子版中都能清晰辨识基准点。

更多文章