首页 > 编程笔记 > MATLAB笔记 阅读:20

MATLAB绘制柱状图(histogram()和polarhistogram())

柱状图是数据分析中用得较多的一种图形,例如在一些预测彩票结果的网站,把各期中奖数字记录下来,然后制成柱状图,这可以让彩民清楚地了解到各个数字在中奖号码中出现的概率。

在 MATLAB 中,绘制柱状图的函数有两个:

MATLAB histogram()函数

histogram() 函数的调用格式及说明如下表所示:

表:histogram() 函数调用格式及说明
调用格式 说明
histogram(X) 基于 X 创建柱状图,使用均匀宽度的 bin 涵盖 X 中的元素范围并显示分布的基本形状
histogram(X,nbins) 使用标量 nbins 指定 bin 的数量
histogram(X,edges) 将 X 划分到由向量 edges 指定 bin 边界的 bin 内。除了同时包含两个边界的最后一个 bin 外,每个 bin 都包含左边界,但不包含右边界。
histogram('BinEdges',edges,'BinCounts',counts) 指定 bin 边界和关联的 bin 计数
histogram(C) 通过为分类数组 C 中的每个类别绘制一个条形来绘制柱状图
histogram(C,Categories) 仅绘制 Categories 指定的类别的子集
histogram('Categories',Categories,'BinCounts',counts) 指定类别和关联的 bin 计数
histogram(...,Name,Value) 使用一个或多个名称-值对组参数设置柱状图的属性
histogram(ax,...) 将图形绘制到 ax 指定的坐标区中,而不是当前坐标区中
h = histogram(...) 返回 Histogram 对象,常用于检查并调整柱状图的属性

【实例 1】生成 10 000 个随机数,创建柱状图并指定边界。MATLAB 程序如下:
>> close all                    % 关闭当前已打开的文件
>> clear                        % 清除工作区的变量
>> x = randn(10000,1);          % 定义正态分布的随机数据x,该向量为10 000行1列
>> h = histogram(x);            % 绘制随机数据x的直方图,如图 1 所示
>> edges = [-10 -2:0.25:2 10];  % 定义边界矩阵edges
>> h = histogram(x,edges);      % 绘制直方图并指定直方图边界宽度,如图 2 所示
运行结果为:

图 1 直方图


图 2 指定边界的直方图

MATLAB polarhistogram()函数

polarhistogram() 函数用于绘制极坐标下的柱状图,它的调用格式及说明如下表所示:

表:polarhistogram() 函数调用格式及说明
调用格式 说明
polarhistogram(theta) 显示参数 theta 的数据在 20 个区间或更少的区间内的分布,向量 theta 中的角度单位为 rad,用于确定每一区间与原点的角度,每一区间的长度反映出输入参数的元素落入该区间的个数。
polarhistogram(theta,nbins) 用正整数参数 nbins 指定 bin 数目。
polarhistogram('BinEdges',edges,'BinCounts',counts) 使用指定的 bin 边界和关联的 bin 计数。
polarhistogram(...,Name,Value) 使用指定的一个或多个名称-值对组参数设置图形属性。
polarhistogram(pax,...) 在 pax 指定的极坐标区(而不是当前坐标区)中绘制图形。
h = polarhistogram(...) 返回 Histogram 对象,常用于检查并调整图形的属性。

【实例 2】创建服从高斯分布的数据柱状图,再将这些数据分到指定范围的若干个相同的柱状图和极坐标下的柱状图中。MATLAB 程序如下:
>> close all                          % 关闭当前已打开的文件
>> clear                              % 清除工作区的变量
>> Y=randn(10000,1);                  % 定义10 000行1列的正态分布的随机向量Y
>> subplot(1,3,1)                     % 将视图分割为1行3列3个窗口,显示第1个视图
>> histogram(Y);                      % 根据均匀分布的伪随机向量Y绘制柱状图
>> title('高斯分布柱状图')            % 添加标题
>> x=-3:0.1:3;                        % 创建-3~3的向量x,元素间隔为0.1
>> subplot(1,3,2)                     % 显示第2个视图
>> h=histogram(Y,x);                  % 根据均匀分布的伪随机向量Y及x绘制柱状图
>> set(h,'FaceColor','r')             % 改变柱状图的颜色为红色
>> title('指定范围的高斯分布柱状图')  % 添加标题
>> subplot(1,3,3)                     % 显示第3个视图
>> theta=Y*pi;                        % 定义极坐标下的数据theta
>> polarhistogram(theta);             % 极坐标下的柱状图
>> title('极坐标系下的柱状图')        % 添加标题
运行结果如下图所示:


图 3 柱状图

相关文章