MATLAB bar()和barh()函数:绘制条形图(附带实例)
条形图可分为二维图形和三维图形,MATLAB 提供了绘制二维条形图的 bar() 和 barh() 函数,bar() 函数用于绘制竖直条形图,barh() 函数用于绘制水平条形图。
bar() 和 barh() 的调用格式都是一样的,因此这里只介绍 bar() 函数的调用格式及说明,如下表所示:
【实例 1】绘制矩阵不同样式的条形图。MATLAB 程序如下:

图 1 条形图
【实例 2】绘制随机矩阵的四种颜色不同的条形图。MATLAB 程序如下:

图 2 条形图
bar() 和 barh() 的调用格式都是一样的,因此这里只介绍 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 条形图