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

MATLAB bar()和bar3()函数:创建条形图(附带实例)

在 MATLAB 中,利用函数 bar() 可以创建条形图,其调用格式如下:
bar(y)                  % 创建条形图,y 中的每个元素对应一个条形
                        % 若 y 为 m×n 矩阵,则 bar 创建 m 个条形组,每组包含 n 个条形
bar(x,y)                % 在 x 指定的位置绘制条形
bar(__,width)           % 设置条形的相对宽度以控制组中各条形的间隔
bar(__,style)           % 指定条形组的样式
bar(__,color)           % 设置所有条形的颜色
在 MATLAB 中,利用函数 barh() 可以绘制水平条形图,该函数的调用格式与函数 bar() 的相同,这里不再赘述。

【实例】绘制不同类型的条形图。在编辑器中编写以下程序并运行。
subplot(2,2,1)
x = 1900:20:2000;
y = [75 91 105 123.5 131 150];
bar(x,y)

subplot(2,2,2)
y = [2 2 3; 2 5 6; 2 8 9; 2 11 12];
bar(y)                  % 显示 4 个条形组,每组包含 3 个条形

subplot(2,2,3)
bar(y,'stacked')        % 显示堆叠条形图,每个条形的高度是行中各元素之和

subplot(2,2,4)
x = [1 2 3 4];
vals = [2 36 5; 11 23 26 12];   % 定义包含两个数据集中值的矩阵
b = bar(x,vals);

% 在第一个条形序列的末端显示值
xtips1 = b(1).XEndPoints;   % 获取条形末端的 x 坐标
ytips1 = b(1).YEndPoints;   % 获取条形末端的 y 坐标
labels1 = string(b(1).YData);
text(xtips1,ytips1,labels1,'HorizontalAlignment','center',...
     'VerticalAlignment','bottom')

% 在第二个条形序列的末端显示值
xtips2 = b(2).XEndPoints;
ytips2 = b(2).YEndPoints;
labels2 = string(b(2).YData);
text(xtips2,ytips2,labels2,'HorizontalAlignment','center',...
     'VerticalAlignment','bottom')
运行程序后,输出如下图所示图形:


图 1 不同类型的条形图

MATLAB bar3()三维条形图

在 MATLAB 中,利用函数 bar3() 可以绘制垂直三维条形图(柱状图),其调用格式如下:
bar3(Z)                 % 绘制三维条形图;[n,m] = size(Z)
% Z 中的各元素为 z 坐标,x = 1:n,y = 1:m
bar3(Y,Z)               % 在 Y 指定的位置绘制 Z 中各元素的条形图
bar3(__,width)          % 设置条形宽度并控制组中各条形的间隔
% 默认 0.8,条形之间有细小间隔;若为 1,组内条形紧挨在一起
bar3(__,style)          % 指定条形的样式
% style 可为 'detached'(分离式,默认)
% 'grouped'(分组式)
% 'stacked'(堆叠式)
bar3(__,color)          % 使用 color 指定的颜色('r'、'g'、'b' 等)显示所有条形
在 MATLAB 中,利用函数 bar3h() 可以绘制水平放置的三维条形图,其调用格式与函数 bar3() 的相同。

【实例】绘制不同类型的三维条形图。在编辑器中编写以下程序并运行。
clear, clf
Z = rand(4);

subplot(1,4,1)
h1 = bar3(Z,'detached');
% set(h1,'FaceColor','w')   % 根据需要对图形句柄进行参数设置
title('分离式条形图')

subplot(1,4,2)
h2 = bar3(Z,'grouped');
title('分组式条形图')
subplot(1,4,3)
h3 = bar3(Z,'stacked');
title('叠加式条形图')
subplot(1,4,4)
h4 = bar3h(Z);              % 水平三维条形图
title('无参式条形图')
运行程序后,输出图形如下图所示:


图 2 不同类型的三维条形图

相关文章