MATLAB boxplot 修改箱子线型、设置箱子颜色、不同长度数据画箱线图、中位线改成黑色、箱线图虚线改实线

效果图:1、train和test样本数据数量不一样;2、上下端横线去掉,中心线变为实线;3、分组修改颜色;4、指定每个箱子、每个组的位置


网上介绍 boxplot的文章已经很多了,自己试了一天总结出来的一些偏门的应用方法。直接上代码。

Deepsurv_train=[0.93 	0.94 	0.82 	0.87 	0.97 	0.98 	0.88 	0.98 	0.88 	0.87 ];
Deepsurv_test=[0.65 	0.52 	0.57 	0.52 	0.59 	0.62 	0.53 	0.53 	0.57 	0.65 	0.57 ];

Random_Survival_Forest_train=[0.95 	0.84 	0.84 	0.84 	0.93 	0.94 	0.95 	0.84 	0.95  ];
Random_Survival_test=[0.58 	0.56 	0.55 	0.51	0.55 	0.56 	0.59 	0.56 	0.59 	0.56 	0.66 ];

S_SAE_train=[0.93 	0.94 	0.74 	0.93 	0.82 	0.93 	0.84 	0.94 	0.84 	0.84 	];
S_SAE_test=[0.69 	0.59 	0.69 	0.59 	0.62 	0.66 	0.49 	0.62 	0.61 	0.60 	0.61 ];

median1=median(Deepsurv_train);
median2=median(Deepsurv_test);
median3=median(Random_Survival_Forest_train);
median4=median(Random_Survival_test);
median5=median(S_SAE_train);
median6=median(S_SAE_test);

Pre = [Deepsurv_train,Deepsurv_test,Random_Survival_Forest_train,Random_Survival_test,S_SAE_train,S_SAE_test]; 
Pre_tmp=[ones(size(Deepsurv_train)),2*ones(size(Deepsurv_test)),3*ones(size(Random_Survival_Forest_train)),4*ones(size(Random_Survival_test))...
    ,5*ones(size(S_SAE_train)),6*ones(size(S_SAE_test))];
figure()

positions1=[ones(size(Deepsurv_train)),1.25*ones(size(Deepsurv_test)),2*ones(size(Random_Survival_Forest_train)),2.25*ones(size(Random_Survival_test))...
    ,3*ones(size(S_SAE_train)),3.25*ones(size(S_SAE_test))];
boxplot(Pre,Pre_tmp,'color','k','widths',0.25,sym = '.',positions=positions1);
set(gca,'xtick',[1.12 2.12 3.12])
set(gca,'ytick',[0.5:0.1:1])
set(gca,'xticklabel',{'Deepsurv','Random_Survival_Forest','S_SAE'})
grid on

color = ['r', 'b', 'r', 'b','r', 'b'];
boxobj = findobj(gca,'Tag','Box');
h = findobj(gca,'Tag','Box');
LW = findobj(gca,'Tag','Lower Whisker');
UW = findobj(gca,'Tag','Upper Whisker');
Uav = findobj(gca,'Tag','Upper Adjacent Value');
Lav = findobj(gca,'Tag','Lower Adjacent Value');
M = findobj(gca,'Tag','Median');
for j=1:length(h)
    LW(j).LineStyle='-';
    UW(j).LineStyle='-';
    Uav(j).LineStyle='none';
    Lav(j).LineStyle='none';
    M(j).Color='k';
   patch(get(h(j),'XData'),get(h(j),'YData'),color(j),'FaceAlpha',.6);
end
legend('','train','test');
ax = gca;
ax.GridColor = [0 0 0];
text(1.14,median1,num2str(median1))
text(1.4,median2,num2str(median2))
text(2.14,median3,num2str(median3))
text(2.4,median4,num2str(median4))
text(3.14,median5,num2str(median5))
text(3.4,median6,num2str(median6))

xlim([0.8 3.6])
xlabel('model','FontSize',13)
ylabel('cindex','FontSize',13)

处理数据长度不一样的方法:构造分组。例如A集有3个量,B集有2个量,则构造[1,1,1,2,2],再对[A,B]和分组,依据每一列画箱线图,由于A集组号都是1所以他们是1组。


修改线型的方法:findobj(gca,‘tag’,想要的组件的句柄) 

句柄在帮助文档找,例如Lower Whisker就是箱线图的下须线

得到的变量是line类型,就可以更改线宽、线型(虚实线)、颜色等等

 如果对您有帮助的话就留个赞吧!

  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值