因为matlab的boxplot支持grouping argument(也就是为每一个数据贴所属group标签),所以可以利用这个性质绘制多组且size不同的数据的boxplot
首先,要介绍一下matlab的grouping argument是怎么回事。如下图所示,y是一个1维数组,而g1是一个和y相同大小的数组或者元胞数组,用于表示y中各个数字所属的group(示例图里因为用字母表示group,所以g1是元胞数组,如果用数字表示grope,g1则为数组)

然后,只需要使用命令 boxplot(y, g1) 就可以了
举例:
x = rand(5,1);
y = rand(10,1);
z = rand(15,1);
group = [repmat({'x'}, 5, 1); repmat({'y‘’}, 10, 1); repmat({'z'}, 15, 1)];
boxplot([x;y;z], group);

[x;y;z] 是合成的长度为25的向量,第1到5属于x,第6到15属于 y,第16到25属于z,group为这25个元素所属的组(即x,y,x)是一个长度为25的数组。这里group的生成使用了repat函数,repat函数的功能是复制和平铺矩阵,以repmat({'x'}, 5, 1)为例

网友评论