前言:柱状图利用柱子的高度,反映数据的差异。肉眼对高度差异很敏感,辨识效果非常好。柱状图的局限在于只适用中小规模的数据集。
目录:
统计图的绘制离不开数据的支撑。一般来说,数据加载主要以在程序中手动输入和从excel表中读取为主。手动输入即将想要绘制的数据直接放置到数组中,从excel表读取数据需要借助xlsread
函数,从excel表中读取到的数据同样也将保存到一个数组中。
a = [1 2 3 4 5] 或者 a = [1,2,3,4,5]
data = xlsread(“C:\Users\Administrator\Desktop\data.xlsx”,“B1:C3”)
✨ 场景:根据考试成绩区间的学生人数绘制柱状图
1 位学生在50~59分之间
2 位学生在60~69分之间
17位学生在70~79分之间
8 位学生在80~89分之间
7 位学生在90~100分之间
MatLab代码如下所示:
x = [50 60 70 80 90];
y = [1 3 17 8 7];
GO = bar(x,y,'edgeColor','green'); %使用bar函数绘制柱状图
GO.FaceColor = [196/255,74/255,74/255]; %通过GO句柄自定义柱形的颜色
%axis([0 100 0 20])%坐标范围
xlim([30 100]); %x坐标显示范围
xticks(30:10:100); %x坐标刻度显示
xlabel('分数','fontsize',17,'FontName','宋体','Fontweight','bold');
ylabel('学生人数');
title('期末考试成绩')
✨ 场景:我国汽车销量和产量每年都在发生变化,以时间变化为基准,根据表中数据画出对应的柱状图
MatLab代码如下所示:
x = 1:1:9; %第一个1是起始端点,中间的是步长,最后一个是结束端点
%纵坐标
samp1 = [2211.68,2372.29,2450.33,2811.9,2901.5,2780.9,2572.1,2522.5,2608.2];
samp2 = [2198.41,2349.19,2459.76,2802.8,2887.9,2808.1,2576.9,2531.1,2627.5];
bar1(:,1) = samp1;
bar1(:,2) = samp2;
GO = bar(bar1,1,'EdgeColor','black');%边框颜色为黑色
GO(1).FaceColor = [196/255,74/255,74/255];%设置第一个柱状图的颜色
GO(2).FaceColor = [80/255,110/255,131/255];%设置第2个柱状图的颜色
ylim([2000 3000]) %y轴显示的范围,根据需要调整
ylabel('车辆数量(万辆)','FontName', '宋体','FontSize',18)
% 图例
legend({'产量','销量'},'fontsize',18);
set(gca,'Xticklabel', ["2013","2014","2015","2016","2017","2018","2019","2020","2021"]) %gca 坐标的句柄
xlabel('时间(年份)','fontsize',18,'FontName','宋体','Fontweight','bold');
title("2013-2021年中国汽车产销量变化图",'Fontsize',20)
✨ 场景:a和b是一个整体,且各自以1的速度增长,c为独立个体,以1的速度下降,画出堆叠柱状图。
MatLab代码如下所示:
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);
%将x刻度整体右移0.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("堆叠柱状图")