MATLAB中bar函数的使用

目录

语法

说明

示例

创建条形图

指定条形位置

指定条形宽度

显示条形组

显示堆叠条形图

显示具有负数据的堆叠条形

指定分类数据

在条形末端指定标签

为条形图指定坐标区

指定条形颜色

指定条形和轮廓颜色 

控制单个条形的颜色 

使用颜色图颜色的条形图

自定义分组或堆叠条形中的一个序列 


        bar函数的作用是条形图

语法

bar(y)
bar(x,y)
bar(___,width)
bar(___,style)
bar(___,color)
bar(___,Name,Value)
bar(ax,___)
b = bar(___)

说明

​bar(y) 创建一个条形图,y 中的每个元素对应一个条形。如果 y 是 m×n 矩阵,则 bar 创建每组包含 n 个条形的 m 个组。​

​bar(x,y) 在 x 指定的位置绘制条形。

​bar(___,width) 设置条形的相对宽度以控制组中各个条形的间隔。将 width 指定为标量值。可以将此选项与前面语法中的任何输入参数组合一起使用。​

​bar(___,style) 指定条形组的样式。例如,使用 'stacked' 将每个组显示为一个多种颜色的条形。

​bar(___,color) 设置所有条形的颜色。例如,使用 'r' 表示红色条形。

​bar(___,Name,Value) 使用一个或多个名称-值对组参数指定条形图的属性。仅使用默认 'grouped' 或 'stacked' 样式的条形图支持设置条形属性。在所有其他输入参数之后指定名称-值对组参数。​

​bar(ax,___) 将图形绘制到 ax 指定的坐标区中,而不是当前坐标区 (gca) 中。选项 ax 可以位于前面的语法中的任何输入参数组合之前。

​b = bar(___) 返回一个或多个 Bar 对象。如果 y 是向量,则 bar 将创建一个 Bar 对象。如果 y 是矩阵,则 bar 为每个序列返回一个 Bar 对象。显示条形图后,使用 b 设置条形的属性。​

示例

创建条形图

y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(y)

指定条形位置

        指定沿 x 轴的条形位置。 

x = 1900:10:2000;
y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(x,y)

指定条形宽度

        将各条形的宽度设置为各条形可用总空间的 40%。

y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(y,0.4)

显示条形组

        显示四个条形组,每一组包含三个条形。

y = [2 2 3; 2 5 6; 2 8 9; 2 11 12];
bar(y)

显示堆叠条形图

        为矩阵中的每一行显示一个条形。每个条形的高度是行中各元素之和。

y = [2 2 3; 2 5 6; 2 8 9; 2 11 12];
bar(y,'stacked')

显示具有负数据的堆叠条形

        将x定义为一个包含三个年份值的向量。将 y 定义为包含负值和正值组合的矩阵。在条形图中显示这些值。

x = [1980 1990 2000];
y = [15 20 -5; 10 -17 21; -10 5 15];
bar(x,y,'stacked')

指定分类数据

        指示条形图类别的一种方法是将 X 指定为分类数组。bar 函数使用经过排序的类别列表,因此条形的显示顺序可能与您预期的有所不同。要保留顺序,请调用 reordercats 函数。

        将 X 定义为分类数组,并调用 reordercats 函数来指定条形的顺序。然后将 Y 定义为条形高度向量,并显示条形图。

X = categorical({'Small','Medium','Large','Extra Large'});
X = reordercats(X,{'Small','Medium','Large','Extra Large'});
Y = [10 21 33 52];
bar(X,Y)

在条形末端指定标签

        将 vals 定义为一个包含两个数据集的值的矩阵。在条形图中显示值,并指定输出参数。由于有两个数据集,bar 返回包含两个 Bar 对象的向量。

x = [1 2 3];
vals = [2 3 6; 11 23 26];
b = bar(x,vals);

        在第一个条形序列的末端显示值。通过获取第一个 Bar 对象的 XEndPoints 和 YEndPoints 属性,获取条形末端的坐标。将这些坐标传递给 text 函数,并指定垂直和水平对齐方式,让值显示在条形末端上方居中处。 

xtips1 = b(1).XEndPoints;
ytips1 = b(1).YEndPoints;
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')

为条形图指定坐标区

        从 R2019b 开始,可以使用 tiledlayout 和 nexttile 函数显示分块条形图。调用 tiledlayout 函数以创建一个 2×1 分块图布局。调用 nexttile 函数以创建坐标区对象 ax1 和 ax2。在顶部坐标区中显示条形图。在底部坐标区中,显示相同数据的堆叠条形图。

y = [1 2 3; 4 5 6];
tiledlayout(2,1)

% Top bar graph
ax1 = nexttile;
bar(ax1,y)

% Bottom bar graph
ax2 = nexttile;
bar(ax2,y,'stacked')

指定条形颜色

        使用红色条形创建一个条形图。

y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(y,'r')

指定条形和轮廓颜色 

        使用 RGB 三元组设置条形内部颜色和轮廓颜色。设置条形轮廓的宽度。 

y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(y,'FaceColor',[0 .5 .5],'EdgeColor',[0 .9 .9],'LineWidth',1.5)

控制单个条形的颜色 

        可以使用 Bar 对象的 CData 属性控制单个条形的颜色。

        创建一个条形图并将 Bar 对象赋给一个变量。将 Bar 对象的 FaceColor 属性设置为 'flat',从而使条形图使用 CData 属性中定义的颜色。默认情况下,CData 属性预先填充由默认 RGB 颜色值组成的矩阵。要更改特定的颜色,请更改矩阵中的对应行。例如,更改第二个条形的颜色。

b = bar(rand(10,1));
b.FaceColor = 'flat';
b.CData(2,:) = [.5 0 .5];

使用颜色图颜色的条形图

        通过将 FaceColor 属性设置为 'flat',创建一个使用颜色图颜色的条形图。然后将每个 Bar 对象的 CData 属性设置为一个整数。

y = [1 3 5; 3 2 7; 3 4 2];
b = bar(y,'FaceColor','flat');
for k = 1:size(y,2)
    b(k).CData = k;
end

自定义分组或堆叠条形中的一个序列 

        创建矩阵 y,其中每列为一个数据序列。调用bar函数以在条形图中显示数据,并指定输出参数。输出是包含三个Bar对象的向量,其中每个对象对应一个不同序列。无论条形是分组还是堆叠,均为如此。 

y = [10 15 20; 30 35 40; 50 55 62];
b = bar(y);

        将第三个条形序列设置为绿色。

b(3).FaceColor = [.2 .6 .5];

猜你喜欢

转载自blog.csdn.net/jk_101/article/details/124930394