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

MATLAB bar()和barh()函数:绘制条形图(附带实例)

条形图可分为二维图形和三维图形,MATLAB 提供了绘制二维条形图的 bar() 和 barh() 函数,bar() 函数用于绘制竖直条形图,barh() 函数用于绘制水平条形图。

bar() 和 barh()  的调用格式都是一样的,因此这里只介绍 bar() 函数的调用格式及说明,如下表所示:

表:bar() 函数调用格式及说明
调用格式 说明
bar(y) 若 y 为向量,则分别显示每个分量的高度,横坐标为 1 到 length(y);若 y 为矩阵,则 bar 把 y 分解成行向量,再分别画出,横坐标为 1 到 size(y,1),即矩阵的行数。在 x 指定的位置画出 y,其中 x 为严格单增的向量。若 y 为矩阵,则 bar 把矩阵分解成 n 个行向量,在指定的横坐标处分别画出。
bar(x,y) 设置条形的相对宽度以控制组内条形的间距,默认值为 0.8。所以,若用户没有指定 x,则同一组内的条形有很小的间距;若设置 width 为 1,则同一组内的条形相互接触。
bar(...,width) 指定条形的排列类型,类型有 group 和 stack,其中 group 为默认的显示模式,它们的含义如下:
group: 若 Y 为 n×m 矩阵,则 bar 显示 n 组,每组有 m 个垂直条形图
stack: 将矩阵 Y 的每一个行向量显示在一个条形中,条形的高度为该行向量中的分量和,其中同一条形中的每个分量用不同的颜色显示出来,从而可以显示每个分量在向量中的分布
bar(...,'style') 用指定的颜色 color 显示所有的条形
bar(ax,...) 将图形绘制到 ax 指定的坐标区中
b = bar(...) 返回一个或多个 Bar 对象。如果 y 是向量,则创建一个 Bar 对象;如果 y 是矩阵,则为每个序列返回一个 Bar 对象。显示条形图后,使用 b 设置条形的属性

【实例 1】绘制矩阵不同样式的条形图。MATLAB 程序如下:
>> close all      % 关闭当前已打开的文件
>> clear          % 清除工作区的变量
>> Y=[sin(pi/3),cos(pi/4);log(3),tanh(6)];  % 创建矩阵Y
>> subplot(2,2,1)                           % 将视图分割为2×2的窗口,显示视图1
>> bar(Y)                                   % 绘制矩阵Y的二维条形图
>> title('图1')                             % 添加标题
>> subplot(2,2,2)                           % 将视图分割为2×2的窗口,显示视图2
>> bar(Y,'histc'),title('图2')              % 显示条形紧挨在一起的直方图,然后添加标题
>> subplot(2,2,3)                           % 将视图分割为2×2的窗口,显示视图3
>> bar(Y,'hist');                           % 显示将每个条形居中置于 x 刻度上的直方图
>> title('图3')                             % 添加标题
>> subplot(2,2,4)                           % 将视图分割为2×2的窗口,显示视图4
>> b=barh(Y);                               % 绘制矩阵Y的二维水平条形图
>> title('图4')                             % 添加标题
运行结果如下图所示:


图 1 条形图

【实例 2】绘制随机矩阵的四种颜色不同的条形图。MATLAB 程序如下:
>> close all                         % 关闭当前已打开的文件
>> clear                             % 清除工作区的变量
%{创建10×1的随机矩阵,每次生成的矩阵不同,因此结果图形不同,读者在自行运行的过程中出现与本书图形
不同的情况,是正常的%}
>> Y=rand(10,1);
>> subplot(2,2,1)                    % 将视图分割为2×2的窗口,显示视图1
>> bar(Y)                            % 绘制矩阵Y的二维条形图
>> title('图1')                      % 添加标题
>> subplot(2,2,2)                    % 将视图分割为2×2的窗口,显示视图2
>> bar(Y,'EdgeColor','r','LineWidth',2),title('图2')  % 设置条形轮廓颜色
>> subplot(2,2,3)                                     % 将视图分割为2×2的窗口,显示视图3
>> bar(Y,'FaceColor',[.5 0 .3]);                      % 设置条形内部颜色
>> title('图3')                                       % 添加标题
>> subplot(2,2,4)                                     % 将视图分割为2×2的窗口,显示视图4
>> b=bar(Y);                                          % 绘制矩阵Y的二维条形图
>> b.FaceColor = 'flat';                              % 将Bar对象的 FaceColor 属性设置为flat
>> b.CData(4,:) = [.2 0 .4];                          % 使用CData属性设置条形图第4条的颜色
>> b.CData(6,:) = [.5 0.1 .8];                        % 使用CData属性设置条形图第6条的颜色
>> title('图4')                                       % 添加标题
运行结果如下图所示:


图 2 条形图

相关文章