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

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

泰勒图本质上是巧妙的将模型的相关系数(correlation coefficient)、中心均方根误差(centered root-mean-square)和标准差(standard Deviation)三个评价指标整合在一张极坐标图上,其基于的便是三者之间构成的余弦关系。

程序包括计算:SD、相关系数、RMSE等指标
在这里插入图片描述


以下是一个基于 MATLAB 的泰勒图绘制代码,包含两种情况: 原始数据的泰勒图标准化后的泰勒图。代码中提供了详细注释,并附带示例数据。


1. 主程序:泰勒图绘制

1.1 数据准备
% 示例数据
obs = [3.5, 4.2, 5.1, 6.3, 7.8, 8.9, 9.5, 10.2]; % 观测值 (基准)
sim1 = [3.6, 4.0, 5.3, 6.1, 7.7, 8.8, 9.6, 10.1]; % 模拟值 1
sim2 = [3.4, 4.1, 5.0, 6.4, 7.9, 9.0, 9.4, 10.3]; % 模拟值 2

% 标准化数据
obs_std = (obs - mean(obs)) / std(obs);
sim1_std = (sim1 - mean(sim1)) / std(sim1);
sim2_std = (sim2 - mean(sim2)) / std(sim2);

% 绘制原始数据的泰勒图
figure;
taylorDiagram(obs, {sim1, sim2}, {'Sim1', 'Sim2'}, 'Original Data Taylor Diagram');

% 绘制标准化后的泰勒图
figure;
taylorDiagram(obs_std, {sim1_std, sim2_std}, {'Sim1_std', 'Sim2_std'}, 'Standardized Data Taylor Diagram');

2. 泰勒图绘制函数

2.1 泰勒图绘制函数
function taylorDiagram(obs, sims, labels, titleText)
    % 输入参数:
    % obs: 观测值 (基准)
    % sims: 模拟值的 cell 数组,每个元素为一个模拟值向量
    % labels: 对应模拟值的标签
    % titleText: 图表标题

    % 计算观测值的标准差
    std_obs = std(obs);
    
    % 创建极坐标图
    figure;
    ax = axes('Polar', 'on', 'Units', 'Normalized', 'Position', [0.1, 0.1, 0.8, 0.8]);
    hold(ax, 'on');
    
    % 绘制标准差圆圈
    maxStd = 1.5 * std_obs; % 最大标准差范围
    theta = linspace(0, 2*pi, 100);
    for r = 0.2:maxStd/5:maxStd
        plot(ax, theta, r * ones(size(theta)), '--k', 'LineWidth', 0.5);
        text(ax, pi/2, r, num2str(r), 'VerticalAlignment', 'bottom', 'HorizontalAlignment', 'center');
    end
    
    % 绘制相关系数弧线
    for rho = 0.1:0.1:1
        x = rho * maxStd * cos(acos(rho));
        y = rho * maxStd * sin(acos(rho));
        plot(ax, [0, acos(rho)], [0, sqrt(maxStd^2 - x^2)], '-k', 'LineWidth', 0.5);
        if rho >= 0.2
            text(ax, acos(rho), sqrt(maxStd^2 - x^2) + 0.1, num2str(rho), 'VerticalAlignment', 'bottom');
        end
    end
    
    % 绘制观测点
    plot(ax, 0, std_obs, 'ko', 'MarkerFaceColor', 'k', 'MarkerSize', 8); % 观测点
    text(ax, 0, std_obs + 0.2, 'Observation', 'HorizontalAlignment', 'center');
    
    % 绘制模拟点
    colors = lines(length(sims)); % 自动选择颜色
    for i = 1:length(sims)
        sim = sims{i};
        std_sim = std(sim); % 模拟值标准差
        corr = corrcoef(obs, sim); % 相关系数
        rho = corr(1, 2);
        
        % 极坐标转换
        theta = acos(rho);
        r = std_sim;
        
        % 绘制点
        plot(ax, theta, r, 'o', 'MarkerFaceColor', colors(i, :), 'MarkerSize', 8);
        text(ax, theta, r + 0.2, labels{i}, 'HorizontalAlignment', 'center');
    end
    
    % 设置图形属性
    xlim(ax, [0, maxStd]);
    ylim(ax, [0, maxStd]);
    title(titleText);
    xlabel('Standard Deviation');
    ylabel('Correlation Coefficient');
end

在这里插入图片描述

3. 功能说明

  1. 输入数据

    • obs 是观测值(基准),用于计算标准差和相关系数。
    • sims 是模拟值的集合,可以是多个模拟值的对比。
  2. 标准化处理

    • 使用 (x - mean(x)) / std(x) 对数据进行标准化,使得所有数据均值为 0,标准差为 1。
  3. 泰勒图绘制逻辑

    • 使用极坐标图表示标准差和相关系数。
    • 横轴表示标准差,纵轴表示相关系数。
    • 观测点固定在 (0, std_obs),模拟点根据其标准差和相关系数定位。
  4. 结果展示

    • 原始数据的泰勒图展示了模拟值与观测值之间的绝对差异。
    • 标准化后的泰勒图消除了量纲影响,便于比较不同变量之间的模拟性能。

4. 示例输出

4.1 原始数据的泰勒图
  • 展示了模拟值与观测值之间的绝对差异。
  • 可以直观看到模拟值的标准差和相关性。
4.2 标准化后的泰勒图
  • 所有数据标准化后,消除了量纲的影响。
  • 更适合比较不同变量之间的模拟效果。

5. 总结

该代码实现了泰勒图的绘制,支持原始数据和标准化数据两种形式。通过泰勒图,可以直观评估模拟值与观测值之间的相似性,包括标准差、相关系数等指标。希望这些代码能够帮助你完成泰勒图的分析任务!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值