如何更改内置Matlab boxplot函数的百分位值?

时间:2012-06-27 15:40:21

标签: matlab

我在使用Matlab R2010b和boxplot函数时遇到了问题。

使用以前版本的Matlab,我在boxplot.m文件中做了一些修改,以便我可以更改使用的百分位值。默认情况下,根据第一个和第三个四分位数(第25和第75百分位数)构建箱形图来定义晶须。我的兴趣是使用第10和第90百分位数。

我尝试了我在互联网上找到的所有解决方案。

所以我的问题是:有没有人找到一种方法来改变Matlab的boxplot函数(R2010b及之后)使用的百分位数的默认值(第25和第75)?

非常感谢!

1 个答案:

答案 0 :(得分:1)

您可以通过修改图形对象的属性(而不是修改函数本身)来更改boxplot显示数据/分位数的方式。

这是一段代码,用于修改用于蓝框的分位数(最初,蓝框对应于.25和.75分位数,并将更改为.1和.9)。上/下晶须的基部将相应地改变。请注意,胡须的尖端不变(它们仍然对应于四分位数范围的1.5)。您可以更改胡须的提示,就像我们更改其基本部件一样。

%%% load some data  
load carsmall  
MPG  = MPG(ismember(Origin,'USA','rows'));  
Origin = Origin(ismember(Origin,'USA','rows'),:)  
Origin(isnan(MPG),:) = [];  
MPG   (isnan(MPG),:) = [];  

%%% quantile calculation  
q = quantile(MPG,[0.1 0.25 0.75 0.9]);  
q10 = q(1);  
q25 = q(2);  
q75 = q(3);  
q90 = q(4);  

%%% boxplot the data  
figure('Color','w');  

subplot(1,2,1);  
boxplot(MPG,Origin);   
title('original boxplot with quartile', 'FontSize', 14, 'FontWeight', 'b', 'Color', 'r');  
set(gca, 'FontSize', 14);  

subplot(1,2,2);  
h = boxplot(MPG,Origin) %define the handles of boxplot  
title('modified boxplot with [.1 .9] quantiles', 'FontSize', 14, 'FontWeight', 'b', 'Color', 'r');  
set(gca, 'FontSize', 14);  

%%% modify the figure properties (set the YData property)  
%h(5,1) correspond the blue box  
%h(1,1) correspond the upper whisker  
%h(2,1) correspond the lower whisker  
set(h(5,1), 'YData', [q10 q90 q90 q10 q10]);% blue box  

upWhisker = get(h(1,1), 'YData');  
set(h(1,1), 'YData', [q90 upWhisker(2)])  

dwWhisker = get(h(2,1), 'YData');  
set(h(2,1), 'YData', [ dwWhisker(1) q10])  


%%% all of the boxplot properties are here  
for ii = 1:7  
   ii  
   get(h(ii,1))  
end  

以下是结果。

enter image description here