matlab绘制条形图:分组(grouped)与堆叠(stacked)混合作图 您所在的位置:网站首页 matlab画矩阵直方图 matlab绘制条形图:分组(grouped)与堆叠(stacked)混合作图

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

2023-09-11 00:52| 来源: 网络整理| 查看: 265

使用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("分组与堆叠混合统计图")

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有