barh
水平条形图

语法
说明
barh(___,
使用一个或多个名称-值对组参数指定条形图的属性。仅使用默认 Name,Value
)'grouped'
或 'stacked'
样式的条形图支持设置条形属性。在所有其他输入参数之后指定名称-值对组参数。有关属性列表,请参阅 Bar 属性。
示例
显示一个条形序列
显示具有轴标签和图例的四个条形序列
将 x
定义为一个包含三个年份值的矩阵。将 y
定义为包含四个城市的降雪数据的矩阵。在每年的组中显示四个条形序列。然后添加轴标签和图例。
x = [1980 1990 2000]; y = [40 50 63 52; 42 55 50 48; 30 20 44 40]; barh(x,y) xlabel('Snowfall') ylabel('Year') legend({'Springfield','Fairview','Bristol','Jamesville'})
更改基线值
创建矩阵 y
。然后在条形图中以 25
为基线值显示 y
值。小于 25
的值显示在基线的左侧。
y = [8 15 33; 30 35 40; 50 55 62];
barh(y,'BaseValue',25)
显示具有负数据的堆叠条形
将 x
定义为一个包含三个年份值的向量。将 y
定义为包含负值和正值组合的矩阵。在堆叠水平条形图中显示值。
x = [1980 1990 2000];
y = [15 20 -5; 10 -17 21; -10 5 15];
barh(x,y,'stacked')
自定义垂直轴刻度标签
将 y
定义为包含四个值的向量,并在水平条形图中显示值。然后调用 yticklabels
函数来更改垂直轴上的刻度标签。
y = [10 20 30 41]; barh(y) yticklabels({'April','May','June','July'})
指定分类数据
指示条形图类别的一种方法是将 X
指定为分类数组。barh
函数使用经过排序的类别列表,因此条形的显示顺序可能与您预期的有所不同。要保留顺序,请调用 reordercats
函数。
将 X
定义为分类数组,并调用 reordercats
函数来指定条形的顺序。然后将 Y
定义为条形长度的向量,并显示条形图。
X = categorical({'Small','Medium','Large','Extra Large'}); X = reordercats(X,{'Small','Medium','Large','Extra Large'}); Y = [10 21 33 52]; barh(X,Y)
在条形末端添加标签
将 vals
定义为包含两个数据序列的矩阵。在水平条形图中显示数据,并指定输出参数。由于有两个序列,barh
返回包含两个 Bar
对象的向量。
x = [1 2 3]; vals = [2 3 6; 11 23 26]; b = barh(x,vals);
在第一个条形序列的末端将值作为标签显示。要实现此目的,请通过获取第一个 Bar
对象的 XEndPoints
和 YEndPoints
属性来获取条形末端的坐标。由于水平条形图具有经过旋转的坐标区,因此在将 XEndPoints
和 YEndPoints
的值传递给 text
函数之前,您必须对它们进行切换。将填充值 0.3
添加到 YEndpoints
中,使文本不会紧挨条形的边。然后调用 text
函数以显示标签。
xtips1 = b(1).YEndPoints + 0.3; ytips1 = b(1).XEndPoints; labels1 = string(b(1).YData); text(xtips1,ytips1,labels1,'VerticalAlignment','middle')
接下来,按照相同的步骤,在第二个条形序列的末端显示标签。
xtips2 = b(2).YEndPoints + 0.3; ytips2 = b(2).XEndPoints; labels2 = string(b(2).YData); text(xtips2,ytips2,labels2,'VerticalAlignment','middle')
指定条形宽度和颜色
自定义一个条形序列
创建矩阵 y
,其中每列为一个数据序列。然后在条形图中显示数据,指定在调用 barh
函数时的输出参数。在本例中,barh
返回包含三个 Bar
对象的向量。每个对象对应于一个不同序列。
y = [10 15 20; 30 35 40; 50 55 62]; b = barh(y);
将第二个条形序列改为绿色,并使用加粗的红边。
b(2).FaceColor = [.2 .6 .5]; b(2).EdgeColor = [.63 .08 .18]; b(2).LineWidth = 2;
比较不同的条形样式
创建数据,并使用使用默认的 'grouped'
样式和 'stacked'
样式在两个不同的条形图中显示数据。
x = [1980 1990 2000]; y = [8 15 25; 30 35 40; 50 55 62]; % Grouped tiledlayout(2,1); ax1 = nexttile; barh(ax1,x,y) title('Grouped Style') % Stacked ax2 = nexttile; barh(ax2,x,y,'stacked') title('Stacked Style')
输入参数
x
— 垂直轴坐标
标量 | 向量 | 矩阵
垂直轴坐标,指定为标量、向量或矩阵。x
的值不需要按顺序排列,但 x
的大小取决于 y
的大小以及您要如何显示数据。下表说明了最常见的情况。
表示形式 | 如何指定 X 和 Y | 示例 |
---|---|---|
显示一个条形序列。 | 指定 |
x = [1980 1990 2000]; y = [10 20 30]; barh(x,y)
|
分组显示多个条形序列。 | 指定以下任意一种组合:
| x = [1980 1980 1980 1990 1990 1990]; y = [2 6 9 11 22 32]; barh(x,y) x = [1980 1990]; y = [2 6 9 11 22 32]; barh(x,y)
|
显示以一个 x 值为中心的一组条形。 | 指定 |
x = 1990; y = [10 20 30]; barh(x,y)
|
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| categorical
| datetime
| duration
y
— 条形长度
标量 | 向量 | 矩阵
条形长度,指定为标量、向量或矩阵。y
的大小取决于 x
的大小以及您要如何显示数据。下表说明了最常见的情况。
表示形式 | 如何指定 X 和 Y | 示例 |
---|---|---|
显示一个条形序列。 | 指定 |
x = [1980 1990 2000]; y = [10 20 30]; barh(x,y)
|
分组显示多个条形序列。 | 指定以下任意一种组合:
| x = [1980 1980 1980 1990 1990 1990]; y = [2 6 9 11 22 32]; barh(x,y) x = [1980 1990]; y = [2 6 9 11 22 32]; barh(x,y)
|
显示以一个 x 值为中心的一组条形。 | 指定 |
x = 1990; y = [10 20 30]; barh(x,y)
|
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| duration
width
— 条形宽度
0.8
(默认) | 标量
条形宽度,指定为每个条形可用空间的一定比例。默认值 0.8
表示每个条形使用从上一条形到下一条形之间的空间的 80%,两端各有 10% 的空白空间。
如果宽度为 1
,则组中的条形会紧挨在一起。
示例: barh([1 2 3],0.5)
创建使用 50% 可用空间的条形。
style
— 分组样式
'grouped'
(默认) | 'stacked'
| 'hist'
| 'histc'
分组样式,使用下列值之一指定。
color
— 条形颜色
颜色名称 | 短名称
条形颜色,指定为下表中的选项之一。
颜色名称 | 短名称 | 外观 |
---|---|---|
'red' | 'r' | |
'green' | 'g' | |
'blue' | 'b' | |
'cyan' | 'c' | |
'magenta' | 'm' | |
'yellow' | 'y' | |
'black' | 'k' | |
'white' | 'w' | |
ax
— 目标坐标区
Axes
对象
目标坐标区,指定为 Axes
对象。如果未指定坐标区,则条形图显示在当前坐标区中。
名称-值参数
将可选的参数对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参数名称,Value
是对应的值。名称-值参数必须出现在其他参数之后,但参数对组的顺序无关紧要。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: barh([10 20 30],'EdgeColor','g')
将围绕条形的轮廓指定为绿色。
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';
LineWidth
— 条形轮廓的宽度
0.5
(默认) | 正值
条形轮廓的宽度,指定为以磅为单位的正值。一磅等于 1/72 英寸。
示例: 1.5
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
BaseValue
— 基线值
0
(默认) | 数值标量值
基线值,指定为数值标量值。
您指定的基线值将根据条形图的方向应用于 x 轴或 y 轴。如果您将条形图的方向由垂直更改为水平(或反之),基线值可能会改变。请在设置 Horizontal
属性之后设置 BaseValue
属性。
输出参数
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)