Matlab 不同数据长度,分组绘制箱型图(Boxplot)

当数据体量很大时,相较于散点图,箱型图是更好的可视化选择。
笔者默认读者都明白箱型图是怎么一回事儿,接下来分享自己的一些心得:

我们期望的结果是这样的,即有很多组且每组有2个以上的箱子:
艾弗森在这里插入图片描述以上图为例,希望制作这三个数据源关于某一变量的箱型图(我的这个数据是:横轴表示年份,不同颜色的数据表示的是三个不同的蒸发产品,纵轴是流域个数,数据太大就不发上来了)

先分享一个制作箱型图的链接,其链接和截图如下:
实现长度不同多组数据散点箱型图(box-scatterplot)的方法
在这里插入图片描述尽管各组数据个数不同,但是通过上图中的方法就还是可以绘制(而不用非得是一个完整矩阵)。

其思路是:

将一个数据源的所有的数据分好组之后(n个数据分成m组,我根据年份分成了30组),将这些组按着顺序前后衔接,生成1xn的一维矩阵(暂且称之为一维数据阵),同时也新构建一个新的1xn的“组号矩阵”(这就是上图第二行代码的意义),这个“组号”矩阵里的元素等于一维数据阵中对应位置上的元素的组号,所以这个组号矩阵应该是类似[1,1,1,…2,2,2,2,…,3,3,…,4,4,…]的。

不同数据长度绘制箱型图的方法就是以上,现在解决下一个问题:如何画出一个组里包含2个以上的箱子的箱型图?

思路就是更改每个箱子的position,让箱子的排列’看起来’被分成了不同组
后续代码如下:

position_1 = 0.7:1:29.7; 
boxplot(group_A,pre_group_A,'colors','b','positions',position_1,'width',0.2,'symbol','');  %group_A为数据,pre_group_A为组号

hold on
position_3 = 1.3:1:30.3; 
boxplot(group_B,pre_group_B,'colors','g','positions',position_3,'width',0.2,'symbol',''); 

position_2 = 1:1:30; 
boxplot(group_C,pre_group_C,'colors','k','positions',position_2,'width',0.2,'symbol','');

set(gca,'XLim',[0 31]);                          %限定横轴显示长度
set(gca,'YLim',[0 160]);                         %限定纵轴显示长度

% 'symbol',''   是为了取消显示异常值

需要注意的是,position_2 = 1:1:30,是在给处在中间的那个箱型图定义位置,所以要放在最后去定义(因为在重复使用boxplot时,matlab会将最后一次生成的箱型图放在横轴的[1,2,3,…]的节点上

参考学习了很多大佬的经验,链接如下:
matlab使用boxplot时,如果出现异常值怎么处理
Matlab如何画箱线图群组

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值