matlab 的bar图不能分组统计,hist才是真正的直方图

博客指出在Matlab里对一组数据分组并统计每组频率时,搜索直方图大多出现bar的介绍,但bar只能单纯绘制数组点,不能统计频率。而真正能统计频率的是hist。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

问题

想要对一组数据进行分组,并统计每组的频率,于是搜索matlab直方图,出来的大部分是 关于bar的介绍。
但是尝试了下,bar并不能统计频率啊,只是单纯地绘制该数组的每个点,用柱来表示而已。

解决方案

真正能统计频率的是hist

x = [1,2,2,2,3,4] 
figure(3) %定义一个图3,3是图的名称
subplot(1,2,1) % 将图3划分为1行2列,定位在第1格
bar(x)         %在该格绘bart图
title('bar')
subplot(1,2,2) % 定位在第2格
hist(x)        % 在该格绘hist图
title('hist')

在这里插入图片描述

### 在 MATLAB 中按组绘制直方图 为了在 MATLAB 中按照不同组别绘制直方图,`hist()` 函数虽然可以实现基本的直方图绘制功能[^1],但对于更复杂的分组需求,推荐使用 `histogram` 函数。下面展示如何利用这些函数来创建基于不同类别的直方图。 #### 方法一:使用 `hist()` 函数 如果坚持采用 `hist()` 来完成任务,则可以通过循环结构分别处理每一组的数据并调用该函数多次,在同一形窗口内叠加显示各个分类的结果: ```matlab % 假设有两组数据dataGroupA和dataGroupB figure; hold on; edges = linspace(min([min(dataGroupA), min(dataGroupB)]), ... max([max(dataGroupA), max(dataGroupB)]), 20); % 定义区间边界向量 [nA, ~] = hist(dataGroupA, edges); bar(edges(1:end-1)+diff(edges)/2, nA/sum(nA), 'FaceColor', 'r'); [nB, ~] = hist(dataGroupB, edges); bar(edges(1:end-1)+diff(edges)/2, nB/sum(nB), 'FaceColor', 'b'); legend('Data Group A', 'Data Group B'); xlabel('Value'); ylabel('Frequency'); title('Histogram by Groups using hist() Function'); hold off; ``` 这段代码先定义了一个共同使用的区间边缘向量 `edges` ,接着针对每组数据计算其对应的频数分布情况,并通过调整柱状条的颜色区分不同的样本集。注意这里除以总数量是为了转换成频率形式以便比较。 #### 方法二:使用 `histogram` 函数 相比之下,`histogram` 提供了更加简便的方式来进行多类别直方图的绘制: ```matlab % 同样假设有两组数据dataGroupA和dataGroupB存储在一个矩阵中 groupedData = [dataGroupA'; dataGroupB']; groups = categorical({'A';'B'}); h = histogram(groupedData,'BinEdges',linspace(min(groupedData(:)),... max(groupedData(:)),20),'Normalization','probability',... 'DisplayStyle','stairs','LineWidth',1.5,... 'CategoricalArray',repmat(groups,[size(groupedData,1) 1])); colormap(summer(length(unique(h.CategoricalArray)))); legend(arrayfun(@(x)sprintf('Category %s',char(x)),unique(h.CategoricalArray),'UniformOutput',false)); xlabel('Values'); ylabel('Probability Density'); title('Histogram by Categories Using histogram() Function'); grid minor; ``` 此方法不仅简化了编程逻辑,还允许直接指定更多样式选项以及自动管理颜色映射关系。此外,设置 `'Normalization','probability'` 参数使得输出结果代表的是概率密度而非原始计数值,从而更好地支持跨组对比分析[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值