Matlab 泰勒图

使用的是已经完善的Matlab 泰勒图的脚本,下载地址
嵌套多个函数,根据具体的使用需要,对脚本进行解读和更改

1. 计算数据

首先是计算使用的数据
具体的使用的是 taylor_statistics.m
输入数据主要是可以是结构体也可以是矩阵序列
原始的脚本需要的数据数据中不能存在NaN等数据
实际观测数据中存在部分缺测或未通过质量控制的数据
因此要修改脚本如下:

  1. error_check_stats.m
    这里主要是将判断是数据是否为有限数据集的这部分直接注释掉。
  2. centered_rms_dev.m
pmean = nanmean(predicted); %修改成这样
rmean = nanmean(reference); %修改成这样
% Calculate (E')^2
crmsd = ((predicted - pmean) - (reference - rmean)).^2;
crmsd = sum(crmsd,'omitnan')/(length(predicted)-sum(isnan(predicted))); %修改成这样
crmsd = sqrt(crmsd);
  1. taylor_statistics.m
% 59行
ccoef = corrcoef(p,r,'rows','complete');  % modify-zg
% 67-70 行
sdevp = std(p,1,'omitnan'); % modify-zg

% Calculate standard deviation of reference field w.r.t N (sigma_r)
sdevr = std(r,1,'omitnan'); %modify-zg

2. 作图

改function的时候一定要记录,自己挖的坑
主要使用 taylor_diagram.m
其中包括:

  1. get_taylor_diagram_options --另外的
  2. get_taylor_diagram_axes
  3. get_taylor_diagram_arguments
    获取taylor_diagram函数的参数
  4. display_taylor_diagram_options
  5. dispopt
[hp, ht, axl] = taylor_diagram(dev,RMS,c, ... %dev 等可以是结构中的数据 strct.data 也可以是矩阵
    'markerLabel',label,... %标记名称
    'markerColor','r',...  %标记的颜色
    'markerLabelColor','k',... % 标记名字的颜色
    'markerSize',2,...   %标记的大小
    'tickRMS',(0:0.05:0.15),...  % RMS的取值范围
    'markerSymbol','+',... % 标记的形状
    'markerKey', 'ERA-5'); % legend
    %% 相关参数在get_taylor_diagram_options里面找
    % 如果是需要在一个坐标系中多次做图 将 overlap 设置为on

然后修改图的亿点点细节

补充
% theta = real(acos(CORs));
% rho=srds 
X = rho(2:end).*cos(theta(2:end)); 
Y = rho(2:end).*sin(theta(2:end));

这两个是每个点显示的坐标, 坐标仅由标准差和相关系数决定 !!!
所以会和计算出来的标准差等不完全一致
但是效果不会变!

plot_taylor_axes

这个可以设置坐标系(字体 title 这些)
相当于直接修改,比如说相关系数原始的是用英文的,如果想修改字体大小等没有option
所以就在这个脚本里面修改 37 41行可以修改标准差这些

        pos1 = 45;	DA = 15; %49(默认的哈,后面有如果开了stdtitle这些的修改处,道理一样)  这个主要是修改位置的,相关系数的宽 posl 是位置, da是总长
        lab = 'Correlation Coefficient'; % 可直接修改为自己需要的
        set(ttt(ic),'rotation',ith-90,'color',option.colCOR, ... %56行 这是修改字体大小位置的
                'horizontalalignment','center',...
                'verticalalignment','bottom', ...
                'fontsize',fontSize, ...
                'fontweight',axlabweight);
add_legend

可以设置legend

overlay_taylor_diagram_lines

这个可以设置相关系数刻度
46行
这个是在overlay里面的不确定没有overlay可不可以哦

MATLAB可以用于绘制泰勒图。你可以使用PeterRochford/SkillMetricsToolbox包来创建泰勒图,但需要注意使用的MATLAB版本必须在2016b及以上,否则可能会报错。该包可以用于比较几个模型的模拟能力,常用的精度指标有相关系数、标准差和中心均方根误差。泰勒图中的散点代表模型,辐射线代表相关系数,横纵轴代表标准差,虚线代表均方根误差。标准化泰勒图是常用的一种形式,它对参考值与变量值的标准差和均方根误差进行标准化,消除了物理量单位。你可以下载PeterRochford/SkillMetricsToolbox包来绘制泰勒图。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [泰勒图--MATLAB实现](https://blog.youkuaiyun.com/weixin_43948357/article/details/102845560)[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^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [MATLAB绘制泰勒图(10个以上model)](https://blog.youkuaiyun.com/doublesql/article/details/117409388)[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^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【MATLAB基础绘图第6棒】绘制泰勒图(Taylor diagram)](https://blog.youkuaiyun.com/qq_44246618/article/details/129209872)[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^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值