matlab绘制条形图:分组(grouped)与堆叠(stacked)混合作图

使用matlab中的bar函数,可以绘制出条形图

其中条形图的样式可以指定为"grouped"(分组,即不同类数据横向并列),或者是"stacked"(堆叠,即不同数据纵向堆在一起)。

clear;clc;
a = 1:5;
b = 2:6;
c = 5:-1:1;
subplot(2,1,1);
bar([a;b;c]',"grouped");
title("分组条形图");
subplot(2,1,2);
bar([a;b;c]',"stacked");
title("堆叠条形图");

画出的图像为

但是,如果想要一部分数据堆叠在一起再和另一部分数据并列的话,matlab中并没有直接给出这个功能,为此,我们可以使用hold on语句,分两次完成作图。

例如,如果想让a数据和b数据堆叠,再和c数据并列的话,可以先绘制a、b数据堆叠的条形图

bar([a;b]',"stacked","BarWidth",0.4);

"BarWidth"代表数据条的宽度,因为之后还要和c数据并列,所以这里我们宽度取0.4

之后,我们再绘制c数据的条形图

hold on
bar(c,"BarWidth",0.4,'Xdata',1.4:1:5.4);

同样的,我们把c数据的宽度也设成0.4,另外,为了让c数据条与之前画的a、b数据条不重合,我们设定c数据条的'Xdata'参数,也就是c数据条的中心位置,默认是[1, 2, 3, 4, 5],我们这里向右移动0.4(也就是a、b数据条的宽度),因此是[1.4, 2.4, 3.4, 4.4, 5.4],可以得到以下图像

发现x坐标的位置还有一些不对劲,我们可以再用下面的代码重新设置x坐标的标度位置和标签

set(gca,'XLim',[0.5 6],'XTick',1.2:1:5.2,'XTickLabel',1:5);

 其中'XLim'参数表示你要显示的坐标轴范围,'XTick'参数表示坐标刻度的位置,由于a、b数据条的中点在[1, 2, 3, 4, 5]的地方,c数据条的终点在[1.4, 2.4, 3.4, 4.4, 5.4]处,因此这里的刻度我们放在两个数据条中间,也就是[1,2, 2.2, 3.2, 4.2, 5.2],最后再设置刻度的标签(’XTickLabel'参数)为[1, 2, 3, 4, 5]

最后也可以设置图例、标注等等,得到的结果如下

 

代码段:
 

clear;close;clc;
a = 1:5;
b = 2:6;
c = 5:-1:1;
figure;
bar([a;b]',"stacked","BarWidth",0.4);
hold on
bar(c,"BarWidth",0.4,'Xdata',1.4:1:5.4);
set(gca,'XLim',[0.4 6],'XTick',1.2:1:5.2,'XTickLabel',1:5);
xlabel("X");
ylabel("y");
legend("a", "b", "c");
title("分组与堆叠混合统计图")

 

  • 16
    点赞
  • 99
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值