bar
条形图

语法
说明
bar(___,
使用一个或多个名称-值对组参数指定条形图的属性。仅使用默认 Name,Value
)'grouped'
或 'stacked'
样式的条形图支持设置条形属性。在所有其他输入参数之后指定名称-值对组参数。有关属性列表,请参阅 Bar 属性。
示例
创建条形图
指定条形位置
指定条形宽度
显示条形组
显示堆叠条形图
显示一个堆叠条形图
创建一个标量 x
和一个向量 y
。以 x=2020
为中心显示一个堆叠条形图。堆叠中的每个分块对应于 y
的一个元素。
x = 2020;
y = [30 50 23];
b = bar(x,y,"stacked");
调整堆叠条形图的宽度。由于各个条形是堆叠的,因此更改 Bar
对象的宽度会更改所有条形。
b(1).BarWidth = 0.25;
显示具有负数据的堆叠条形
将 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')
指定条形颜色
指定条形和轮廓颜色
使用 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];
输入参数
x
— x 坐标
标量 | 向量 | 矩阵
x 坐标,指定为标量、向量或矩阵。x
的值不需要按顺序排列,但 x
的大小取决于 y
的大小以及您要如何显示数据。下表说明了最常见的情况。
表示形式 | 如何指定 X 和 Y | 示例 |
---|---|---|
显示一个条形序列。 | 指定 |
x = [1980 1990 2000]; y = [10 20 30]; bar(x,y)
|
分组显示多个条形序列。 | 指定以下任意一种组合:
| x = [1980 1980 1980 1990 1990 1990]; y = [2 6 9 11 22 32]; bar(x,y) x = [1980 1990]; y = [2 6 9 11 22 32]; bar(x,y)
|
显示以一个 x 值为中心的一组条形。 | 指定 |
x = 1990; y = [10 20 30]; bar(x,y)
|
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| categorical
| datetime
| duration
y
— y 坐标
标量 | 向量 | 矩阵
y 坐标,指定为标量、向量或矩阵。y
的大小取决于 x
的大小以及您要如何显示数据。下表说明了最常见的情况。
表示形式 | 如何指定 X 和 Y | 示例 |
---|---|---|
显示一个条形序列。 | 指定 |
x = [1980 1990 2000]; y = [10 20 30]; bar(x,y)
|
分组显示多个条形序列。 | 指定以下任意一种组合:
| x = [1980 1980 1980 1990 1990 1990]; y = [2 6 9 11 22 32]; bar(x,y) x = [1980 1990]; y = [2 6 9 11 22 32]; bar(x,y)
|
显示以一个 x 值为中心的一组条形。 | 指定 |
x = 1990; y = [10 20 30]; bar(x,y)
|
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| duration
width
— 条形宽度
0.8
(默认) | 标量
条形宽度,指定为可用于每个条形的总空间的一部分。默认值 0.8
表示条形宽度是从上一条形到下一条形之间的空间的 80%,两端各占该空间的 10%。
如果宽度为 1
,则组中的条形紧挨在一起。
示例: bar([1 2 3],0.5)
创建使用 50% 可用空间的条形。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
style
— 分组样式
'grouped'
(默认) | 'stacked'
| 'hist'
| 'histc'
color
— 条形颜色
颜色名称 | 短名称
条形颜色,指定为下表中的选项之一。
颜色名称 | 短名称 | 外观 |
---|---|---|
'red' | 'r' | |
'green' | 'g' | |
'blue' | 'b' | |
'cyan' | 'c' | |
'magenta' | 'm' | |
'yellow' | 'y' | |
'black' | 'k' | |
'white' | 'w' | |
ax
— 坐标区对象
坐标区对象
坐标区对象。如果您不指定坐标区,则 bar
使用条形图的当前坐标区。
名称-值参数
将可选的参数对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参数名称,Value
是对应的值。名称-值参数必须出现在其他参数之后,但参数对组的顺序无关紧要。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: bar([10 20 30],'EdgeColor','g')
将围绕条形的轮廓指定为绿色。
此处所列的 Bar
属性只是一部分。有关完整列表,请参阅 Bar 属性。
EdgeColor
— 轮廓颜色
'flat'
| RGB 三元组 | 十六进制颜色代码 | 'r'
| 'g'
| 'b'
| ...
轮廓颜色,指定为 'flat'
、RGB 三元组、十六进制颜色代码、颜色名称或短名称。如果有 150 个条形或更少,则默认值为 [0 0 0]
,对应于黑色。如果相邻条形超过 150 个,则默认值为 'none'
。
从 R2017b 开始,'flat'
选项使用 CData
值对边进行着色。在以前的版本中,'flat'
选项使用颜色图中的颜色对边进行着色。
对于自定义颜色,请指定 RGB 三元组或十六进制颜色代码。
RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于
[0,1]
范围内,例如[0.4 0.6 0.7]
。十六进制颜色代码是字符串标量或字符向量,以井号 (
#
) 开头,后跟三个或六个十六进制数字,范围可以是0
到F
。这些值不区分大小写。因此,颜色代码"#FF8800"
与"#ff8800"
、"#F80"
与"#f80"
是等效的。
此外,还可以按名称指定一些常见的颜色。下表列出了命名颜色选项、等效 RGB 三元组和十六进制颜色代码。
颜色名称 | 短名称 | RGB 三元组 | 十六进制颜色代码 | 外观 |
---|---|---|---|---|
"red" | "r" | [1 0 0] | "#FF0000" | |
"green" | "g" | [0 1 0] | "#00FF00" | |
"blue" | "b" | [0 0 1] | "#0000FF" | |
"cyan" | "c" | [0 1 1] | "#00FFFF" | |
"magenta" | "m" | [1 0 1] | "#FF00FF" | |
"yellow" | "y" | [1 1 0] | "#FFFF00" | |
"black" | "k" | [0 0 0] | "#000000" | |
"white" | "w" | [1 1 1] | "#FFFFFF" | |
"none" | 不适用 | 不适用 | 不适用 | 无颜色 |
以下是 MATLAB® 在许多类型的绘图中使用的默认颜色的 RGB 三元组和十六进制颜色代码。
RGB 三元组 | 十六进制颜色代码 | 外观 |
---|---|---|
[0 0.4470 0.7410] | "#0072BD" | |
[0.8500 0.3250 0.0980] | "#D95319" | |
[0.9290 0.6940 0.1250] | "#EDB120" | |
[0.4940 0.1840 0.5560] | "#7E2F8E" | |
[0.4660 0.6740 0.1880] | "#77AC30" | |
[0.3010 0.7450 0.9330] | "#4DBEEE" | |
[0.6350 0.0780 0.1840] | "#A2142F" |
示例: b = bar(1:10,'EdgeColor','red')
示例: b.EdgeColor = [0 0.5 0.5];
示例: b.EdgeColor = 'flat';
示例: b.EdgeColor = '#D2F9A7';
FaceColor
— 填充颜色
'flat'
| RGB 三元组 | 十六进制颜色代码 | 'r'
| 'g'
| 'b'
| ...
填充颜色,指定为 'flat'
、RGB 三元组、十六进制颜色代码、颜色名称或短名称。'flat'
选项使用 Bar
对象的 CData
属性值对面进行着色。
对于自定义颜色,请指定 RGB 三元组或十六进制颜色代码。
RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于
[0,1]
范围内,例如[0.4 0.6 0.7]
。十六进制颜色代码是字符串标量或字符向量,以井号 (
#
) 开头,后跟三个或六个十六进制数字,范围可以是0
到F
。这些值不区分大小写。因此,颜色代码"#FF8800"
与"#ff8800"
、"#F80"
与"#f80"
是等效的。
此外,还可以按名称指定一些常见的颜色。下表列出了命名颜色选项、等效 RGB 三元组和十六进制颜色代码。
颜色名称 | 短名称 | RGB 三元组 | 十六进制颜色代码 | 外观 |
---|---|---|---|---|
"red" | "r" | [1 0 0] | "#FF0000" | |
"green" | "g" | [0 1 0] | "#00FF00" | |
"blue" | "b" | [0 0 1] | "#0000FF" | |
"cyan" | "c" | [0 1 1] | "#00FFFF" | |
"magenta" | "m" | [1 0 1] | "#FF00FF" | |
"yellow" | "y" | [1 1 0] | "#FFFF00" | |
"black" | "k" | [0 0 0] | "#000000" | |
"white" | "w" | [1 1 1] | "#FFFFFF" | |
"none" | 不适用 | 不适用 | 不适用 | 无颜色 |
以下是 MATLAB 在许多类型的绘图中使用的默认颜色的 RGB 三元组和十六进制颜色代码。
RGB 三元组 | 十六进制颜色代码 | 外观 |
---|---|---|
[0 0.4470 0.7410] | "#0072BD" | |
[0.8500 0.3250 0.0980] | "#D95319" | |
[0.9290 0.6940 0.1250] | "#EDB120" | |
[0.4940 0.1840 0.5560] | "#7E2F8E" | |
[0.4660 0.6740 0.1880] | "#77AC30" | |
[0.3010 0.7450 0.9330] | "#4DBEEE" | |
[0.6350 0.0780 0.1840] | "#A2142F" |
从 R2017b 开始,默认值是来自坐标区的 ColorOrder
属性的一个 RGB 三元组。在以前的版本中,默认值为 'flat'
,且颜色基于颜色图。
示例: b = bar(1:10,'FaceColor','red')
示例: b.FaceColor = [0 0.5 0.5];
示例: b.FaceColor = 'flat';
示例: b.FaceColor = '#D2F9A7';
CData
— 颜色数据
RGB 三元组 | 三列矩阵 | 标量 | 向量
颜色数据,指定为下列值之一:
RGB 三元组 - 对所有条形应用同一个 RGB 颜色值。
三列矩阵 - 每个条形一种颜色。矩阵中的每一行指定一个特定条形的 RGB 三元组。
标量 - 对所有条形应用颜色图中的一种颜色。
向量 - 每个条形一种颜色。颜色来自颜色图。
默认情况下,当您创建条形图时,CData
属性包含一个由 RGB 三元组组成的三列矩阵。通过更改矩阵中的对应行,可以更改特定条形的颜色。
仅当 FaceColor
或 EdgeColor
属性设置为 'flat'
时,此属性才适用。
示例
通过将 FaceColor
属性设置为 'flat'
,更改特定条形的颜色。然后将 CData
矩阵中的对应行更改为新的 RGB 三元组。例如,更改第二个条形的颜色。
b = bar(1:10,'FaceColor','flat'); b.CData(2,:) = [0 0.8 0.8];
BaseValue
— 基线值
0
(默认) | 数值标量值
基线值,指定为数值标量值。
您指定的基线值将根据条形图的方向应用于 x 轴或 y 轴。如果您将条形图的方向由垂直更改为水平(或反之),基线值可能会改变。请在设置 Horizontal
属性之后设置 BaseValue
属性。
LineStyle
— 条形轮廓的线型
'-'
(默认) | '--'
| ':'
| '-.'
| 'none'
条形轮廓的线型,指定为此表中的线型之一。
线型 | 描述 | 表示的线条 |
---|---|---|
"-" | 实线 |
|
"--" | 虚线 |
|
":" | 点线 |
|
"-." | 点划线 |
|
"none" | 无线条 | 无线条 |
LineWidth
— 条形轮廓的宽度
0.5
(默认) | 正值
条形轮廓的宽度,指定为以磅为单位的正值。一磅等于 1/72 英寸。
示例: 1.5
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
输出参数
b
— Bar
对象
Bar
对象
Bar
对象。在创建具体的 Bar
对象后,可使用 b
中的元素访问和修改对象属性。Bar
对象的数量取决于 y
的大小。如果 y
是向量,则 b
是一个 Bar
对象。如果 y
是矩阵,则 b
是向量,其中包含的每个 Bar
对象都对应于 y
中一个序列。
详细信息
扩展功能
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
用法说明和限制:
此函数接受 GPU 数组,但不在 GPU 上运行。
有关详细信息,请参阅Run MATLAB Functions on a GPU (Parallel Computing Toolbox)。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
用法说明和限制:
此函数在分布式数组上运行,但在客户端 MATLAB 中执行。
有关详细信息,请参阅Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)