matlab画图(一、柱状图)

本文介绍了如何在MatLab中使用柱状图展示不同场景的数据,包括简单柱状图、分组柱状图和堆叠柱状图,并提供了实例代码和应用场景。适合初学者和数据分析者了解数据可视化技巧。

🐋 前言:柱状图利用柱子的高度,反映数据的差异。肉眼对高度差异很敏感,辨识效果非常好。柱状图的局限在于只适用中小规模的数据集。


🐬 目录:


一、数据获取

统计图的绘制离不开数据的支撑。一般来说,数据加载主要以在程序中手动输入和从excel表中读取为主。手动输入即将想要绘制的数据直接放置到数组中,从excel表读取数据需要借助xlsread函数,从excel表中读取到的数据同样也将保存到一个数组中。

🐋 1.1 手动输入数据

a = [1 2 3 4 5] 或者 a = [1,2,3,4,5]

在这里插入图片描述

🐋 1.2 从excel(data.xlsx)中读取指定位置的数据

在这里插入图片描述

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("堆叠柱状图")

代码运行效果如下所示:
在这里插入图片描述

感谢观看,如对内容有疑惑或补充,欢迎留言讨论,共同进步!!!

在这里插入图片描述

### MATLAB绘制柱状图的方法 以下是几种常见的MATLAB绘制柱状图的方式及其示例代码: #### 方法:基础柱状图 可以使用`bar()`函数来创建简单的柱状图。通过指定数据向量和颜色属性,能够实现自定义样式。 ```matlab data = [20, 35, 30, 35, 27]; % 数据 labels = categorical({'A', 'B', 'C', 'D', 'E'}); % 类别标签 figure; b = bar(labels, data, 0.8, 'FaceColor', [0.12 0.57 1], 'EdgeColor', 'none'); set(gca, 'FontSize', 14, 'FontName', 'Times New Roman'); % 设置字体 xlabel('类别', 'FontName', '宋体', 'FontSize', 16); ylabel('值', 'FontName', '宋体', 'FontSize', 16); % 标注数据 for i = 1:length(data) text(i, data(i), num2str(data(i)), ... 'HorizontalAlignment', 'center', 'VerticalAlignment', 'bottom', ... 'FontSize', 12, 'FontName', 'Times New Roman'); end ``` 此方法适用于简单的维数据展示[^3]。 --- #### 方法二:分组柱状图 当需要比较多个类别的不同维度时,可采用分组柱状图。以下是个两组数据的示例: ```matlab groupData = [20, 35, 30, 35, 27; 25, 32, 34, 20, 25]; % 多组数据 categories = {'Group A', 'Group B', 'Group C', 'Group D', 'Group E'}; figure; hBars = bar(groupData, 'BarWidth', 0.8, 'FaceColor', 'flat'); colormap([0.12 0.57 1; 0.9 0.5 0]); % 自定义颜色 set(hBars(1), 'CData', ones(size(groupData))); set(hBars(2), 'CData', 2 * ones(size(groupData))); legend(categories{:}, 'FontSize', 12, 'FontName', 'Times New Roman'); xlabel('类别', 'FontName', '宋体', 'FontSize', 14); ylabel('值', 'FontName', '宋体', 'FontSize', 14); set(gca, 'FontSize', 12, 'FontName', 'Times New Roman'); ``` 这种方法适合对比多组数据之间的差异[^2]。 --- #### 方法三:带误差棒的柱状图 如果需要显示数据的不确定性或波动范围,则可以通过结合`errorbar()`函数完成带有误差棒的柱状图。 ```matlab rng(5); % 随机数种子固定 data = randi([20, 35], [5, 2]); errors = rand([5, 2]) .* 5; figure; hold on; bh = bar(data, 'BarWidth', 1, 'FaceColor', 'flat'); colormap([0.12 0.57 1; 0.9 0.5 0]); set(bh(1), 'CData', ones(size(data))); set(bh(2), 'CData', 2 * ones(size(data))); errorbar(bh(1).XEndPoints, data(:, 1), errors(:, 1), ... 'LineStyle', 'none', 'Color', 'k', 'LineWidth', 1); errorbar(bh(2).XEndPoints, data(:, 2), errors(:, 2), ... 'LineStyle', 'none', 'Color', 'k', 'LineWidth', 1); box on; ax = gca; ax.FontSize = 12; ax.FontName = 'Times New Roman'; ax.XTick = 1:5; ax.XTickLabel = {'A', 'B', 'C', 'D', 'E'}; ax.YLim = [0, max(max(data) + max(errors))]; legend({'Category 1', 'Category 2'}, 'FontSize', 12, 'FontName', 'Times New Roman'); ``` 这种图表形式有助于直观呈现数据的变化区间[^1]。 --- #### 方法四:三维柱状图 对于更复杂的场景,还可以利用`bar3()`函数生成三维柱状图。 ```matlab Z = magic(5); % 使用魔方矩阵作为示例数据 figure; hb = bar3(Z, 'style', 'detached'); colormap(parula(length(Z(:)))); view(-50, 30); % 调整视角 xlabel('X轴', 'FontName', '宋体', 'FontSize', 14); ylabel('Y轴', 'FontName', '宋体', 'FontSize', 14); zlabel('Z轴', 'FontName', '宋体', 'FontSize', 14); title('三维柱状图示例', 'FontName', '宋体', 'FontSize', 16); set(gca, 'FontSize', 12, 'FontName', 'Times New Roman'); ``` 该方式特别适于表现二维网格上的高度变化情况[^2]。 --- ### 注意事项 - `bar()` 和 `bar3()` 是核心绘图工具。 - 可以调整参数如宽度 (`BarWidth`)、填充模式 (`FaceColor`, `EdgeColor`) 来美化图形。 - 对于复杂需求(如标注文字),需借助循环结构逐项处理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值