案例详细提供2套泰勒图画法:原始数据的泰勒图与对数据标准化后的泰勒图

泰勒图 Matlab代码
案例详细提供2套泰勒图画法:原始数据的泰勒图与对数据标准化后的泰勒图
笔者对此泰勒图代码进行了详细的注释,可实现点的大小和颜色的自定义设置,提供多种配色,可根据爱好自行设置喜欢的款式
-----------------------------
泰勒图本质上是巧妙的将模型的相关系数(correlation coefficient)、中心均方根误差(centered root-mean-square)和标准差(standard Deviation)三个评价指标整合在一张极坐标图上,其基于的便是三者之间构成的余弦关系。

泰勒图 Matlab代码

泰勒图是一种将模型的相关系数、中心均方根误差和标准差三个评价指标整合在一张图上的方法。在这篇文章中,我们将详细介绍泰勒图的原理和应用,并提供两种泰勒图画法的 Matlab 代码。

首先,让我们来看看泰勒图的原理。泰勒图基于的是相关系数、中心均方根误差和标准差之间的余弦关系。相关系数反映了模型预测值和观测值之间的关系密切程度,中心均方根误差反映了模型预测误差的大小和方向,标准差则反映了观测数据的分布范围。这三个指标的组合可以在一张极坐标图上呈现出来,从而更清晰地展示模型的性能。

接下来,我们将提供两种泰勒图画法的 Matlab 代码。第一种是原始数据的泰勒图,代码如下:

% load data
load('data.mat');

% calculate correlation coefficient, centered root-mean-square and
% standard deviation
R = corrcoef(pressure, prediction);
crmsd = sqrt(mean((prediction - pressure).^2));
sdev = std(pressure);

% plot Taylor diagram
figure;
sd = [0, 1, 2, 3, 4, 5];
angles = 0:pi/4:2*pi;
for i=1:numel(sd)
    r = sd(i) * sdev;
    x = r * cos(angles);
    y = r * sin(angles);
    line('XData', x, 'YData', y, 'Color', 'k', 'LineStyle', '--');
    text(r+0.1, 0, num2str(sd(i)));
end
hold on;
r = crmsd;
x = r * cos(angles);
y = r * sin(angles);
line('XData', x, 'YData', y, 'LineWidth', 2);
text(r+0.1, 0, 'CRMSD');

for i=1:size(R, 1)
    r = sqrt(R(i,2)^2 + (1 - R(i,2)^2) * (prediction(i)/pressure(i))^2) * sdev;
    x = r * cos(angles);
    y = r * sin(angles);
    line('XData', x, 'YData', y, 'Marker', '.', 'MarkerSize', prediction(i)*50/max(prediction), 'Color', [0.5 0.5 0.5]);
end

第二种是对数据进行标准化后的泰勒图,代码如下:

% load data
load('data.mat');

% standardize data
pressure = pressure - mean(pressure);
pressure = pressure / std(pressure);
prediction = prediction - mean(prediction);
prediction = prediction / std(prediction);

% calculate correlation coefficient, centered root-mean-square and
% standard deviation
R = corrcoef(pressure, prediction);
crmsd = sqrt(mean((prediction - pressure).^2));
sdev = std(pressure);

% plot Taylor diagram
figure;
sd = [0, 1, 2, 3, 4, 5];
angles = 0:pi/4:2*pi;
for i=1:numel(sd)
    r = sd(i) * sdev;
    x = r * cos(angles);
    y = r * sin(angles);
    line('XData', x, 'YData', y, 'Color', 'k', 'LineStyle', '--');
    text(r+0.1, 0, num2str(sd(i)));
end
hold on;
r = crmsd * sdev;
x = r * cos(angles);
y = r * sin(angles);
line('XData', x, 'YData', y, 'LineWidth', 2);
text(r+0.1, 0, 'CRMSD');

for i=1:size(R, 1)
    r = sqrt(R(i,2)^2 + (1 - R(i,2)^2) * prediction(i)^2) * sdev;
    x = r * cos(angles);
    y = r * sin(angles);
    line('XData', x, 'YData', y, 'Marker', '.', 'MarkerSize', 50, 'Color', [0.5 0.5 0.5]);
end

代码中加入了详细的注释,您可以根据自己的需求进行点的大小和颜色的自定义设置,提供多种配色,可根据爱好自行设置喜欢的款式。

总结

本文介绍了泰勒图的原理和应用,并提供了两种泰勒图画法的 Matlab 代码。通过泰勒图,我们可以更直观地展示模型的性能,并更好地了解相关系数、中心均方根误差和标准差之间的余弦关系。希望本文对您有所帮助。

相关代码,程序地址:http://lanzouw.top/664978854525.html
 

Python泰勒是一种用于绘制气象数据的统计表。它可以帮助我们比较和评估模型模拟数据与实测观测数据之间的差异和相似性。泰勒通过将观测数据和模型数据在极坐标上表示,并绘制圆圈、扇形和箭头来展示它们的差异和相关性。 要绘制Python泰勒,首先需要进行数据预处理,然后按照以下步骤进行绘: 1. 引入相关库,如pandas、numpy、matplotlib等。 2. 读入数据,确保数据格式正确。 3. 创建一个形对象,设置形的大小、分辨率等参数。 4. 创建子对象,通过projection参数设置为'polar'来创建极坐标。 5. 使用tar函数在子上绘制泰勒的圆圈、扇形和箭头。可以使用text函数添加标签。 6. 保存像并显示。 下面是一个绘制Python泰勒的示例代码: ```python import pandas as pd import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.basemap import Basemap import cmaps plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False # 绘 fig = plt.figure(figsize=(12, 8), dpi=300) plt.rc('font', family='Arial', size=13) # 创建子1 ax1 = fig.add_subplot(121, projection='polar') ax1.text(0.6, 0.1, '(a)', fontsize=15) tar(ax1, r1, st1) # 创建子2 ax2 = fig.add_subplot(122, projection='polar') ax2.text(0.6, 0.1, '(b)', fontsize=15) tar(ax2, r2, st2) plt.savefig('D:/talor.jpg', bbox_inches="tight", dpi=300) plt.show() ``` 其中,tar函数是用于绘制泰勒的主要函数,通过传入子对象、数据和其他参数来绘制泰勒。plot_taylor函数是用于绘制泰勒的辅助函数,可以绘制箭头等元素。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [【Python气象处理绘第七弹–泰勒绘制】](https://blog.csdn.net/weixin_43347581/article/details/129682668)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [python 泰勒](https://blog.csdn.net/zZ_biscuit/article/details/123648309)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值