histogram
直方图

说明
直方图属于数值数据的条形图类型,将数据分组为 bin。创建 Histogram
对象后,可以通过更改直方图的属性值修改它的各个方面。这对快速修改 bin 属性或更改显示特别有用。
创建对象
语法
描述
histogram(
基于 X
)X
创建直方图。histogram
函数使用自动分 bin 算法,然后返回均匀宽度的 bin,这些 bin 可涵盖 X
中的元素范围并显示分布的基本形状。histogram
将 bin 显示为矩形,这样每个矩形的高度就表示 bin 中的元素数量。
histogram(
仅绘制 C
,Categories
)Categories
指定的类别的子集。
histogram('Categories',
手动指定类别和关联的 bin 计数。Categories
,'BinCounts',counts
)histogram
绘制指定的 bin 计数,而不执行任何数据分 bin。
histogram(___,
使用前面的任何语法指定具有一个或多个 Name,Value
)Name,Value
对组参数的其他选项。例如,可以指定 'BinWidth'
和一个标量以调整 bin 的宽度,或指定 'Normalization'
和一个有效选项('count'
、'probability'
、'countdensity'
、'pdf'
、'cumcount'
或 'cdf'
)以使用不同类型的归一化。有关属性列表,请参阅 Histogram 属性。
histogram(
将图形绘制到 ax
,___)ax
指定的坐标区中,而不是当前坐标区 (gca
) 中。选项 ax
可以位于前面的语法中的任何输入参数组合之前。
返回 h
= histogram(___)Histogram
对象。使用此语法可检查并调整直方图的属性。有关属性列表,请参阅 Histogram 属性。
输入参数
X
— 要分布到各 bin 的数据
向量 | 矩阵 | 多维数组
要分布到各 bin 的数据,指定为向量、矩阵或多维数组。如果 X
不是向量,则 histogram
将它视作单列向量 X(:)
并绘制一个直方图。
histogram
忽略所有 NaN
和 NaT
值。同样,histogram
忽略 Inf
和 -Inf
值,除非 bin 边界将 Inf
或 -Inf
显式指定为 bin 边界。虽然 NaN
、NaT
、Inf
和 -Inf
值通常情况下不会绘制,但在包括所有数据元素的归一化计算(如 'probability'
)中,仍然会包含这些值。
注意
如果 X
包含类型为 int64
或 uint64
且大于 flintmax
的整数,则建议您显式指定直方图 bin 边界。histogram
会自动使用双精度对输入数据进行分 bin,这些数据缺少大于 flintmax
的数字的整数精度。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| datetime
| duration
C
— 分类数据
分类数组
分类数据,指定为分类数组。histogram
不会绘制未定义的分类值。但在包括所有数据元素的归一化计算(如 'probability'
)中,仍然会包含未定义的分类值。
数据类型: categorical
nbins
— bin 数量
正整数
bin 数量,指定为正整数。如果不指定 nbins
,则 histogram
基于 X
中的值自动计算将使用多少个 bin。
示例: histogram(X,15)
创建一个带 15 个 bin 的直方图。
edges
— bin 边界
向量
bin 边界,指定为向量。edges(1)
是第一个 bin 的左边界,edges(end)
是最后一个 bin 的右边界。
如果 edges(k)
≤ X(i)
< edges(k+1)
,值 X(i)
位于第 k
个 bin 中。最后一个 bin 也包含 bin 的右边界,这样如果 edges(end-1)
≤ X(i)
≤ edges(end)
,它包含 X(i)
。
对于日期时间和持续时间数据,edges
必须是单调递增顺序的日期时间或持续时间向量。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| datetime
| duration
Categories
— 直方图中包含的类别
字符向量元胞数组 | 分类数组 | 字符串数组 | pattern
标量
注意
此选项仅适用于分类直方图。
直方图中包含的类别,指定为字符向量元胞数组、分类数组、字符串数组或 pattern
标量。
如果您指定输入分类数组
C
,则默认情况下,histogram
将为C
中的每个类别绘制一个条形。在这种情况下,请改用Categories
以指定类别的唯一子集。如果您指定 bin 计数,
Categories
将为直方图指定关联的类别名称。
示例: h = histogram(C,{'Large','Small'})
只绘制类别 'Large'
和 'Small'
中的分类数据。
示例: histogram(C,"Y" + wildcardPattern)
对名称以字母 Y
开头的类别中的数据进行绘图。
示例: histogram('Categories',{'Yes','No','Maybe'},'BinCounts',[22 18 3])
绘制包含三个类别及关联 bin 计数的直方图。
示例: h.Categories
查询直方图对象 h
中的类别。
数据类型: cell
| categorical
| string
| pattern
counts
— bin 计数
向量
bin 计数,指定为向量。当单独执行 bin 计数计算且不希望 histogram
执行任何数据分 bin 时,可使用此输入将 bin 计数传递给 histogram
。
counts
的长度必须等于 bin 的数量。
对于数值直方图,bin 的数量为
length(edges)-1
。对于分类直方图,bin 的数量等于类别的数量。
示例: histogram('BinEdges',-2:2,'BinCounts',[5 8 15 9])
示例: histogram('Categories',{'Yes','No','Maybe'},'BinCounts',[22 18 3])
ax
— 目标坐标区
Axes
对象 | PolarAxes
对象
目标坐标区,指定为 Axes
对象或 PolarAxes
对象。如果您不指定坐标区而且当前坐标区是笛卡尔坐标区,histogram
函数将使用当前坐标区 (gca
)。要在极坐标区上绘图,请指定 PolarAxes
对象作为第一个输入参数,或者使用 polarhistogram
函数。
将可选的参数对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参数名称,Value
是对应的值。名称-值参数必须出现在其他参数之后,但参数对组的顺序无关紧要。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: histogram(X,'BinWidth',5)
此处所列的直方图属性只是子集。有关完整列表,请参阅 Histogram 属性。
BarWidth
— 分类条形的相对宽度
0.9
(默认) | 范围 [0,1]
中的标量
注意
此选项仅适用于分类数据的直方图。
分类条形的相对宽度,指定为 [0,1]
范围中的一个标量值。使用此属性可控制直方图内各分类条形的间隔。默认值是 0.9
,表示条形宽度占从上一条形到下一条形之间的空间的 90%,两侧各占该空间的 5%。
如果您将该属性设置为 1
,则相邻的条形将紧挨在一起。
示例: 0.5
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
BinLimits
— bin 范围
二元素向量
bin 范围,指定为二元素向量 [bmin,bmax]
。该选项使用输入数组 X
中介于 bmin
和 bmax
(含二者)之间的值绘制直方图。即 X(X>=bmin & X<=bmax)
。
此选项不适用于分类数据的直方图。
示例: histogram(X,'BinLimits',[1,10])
仅使用 X
中介于 1
和 10
(含二者)之间的值绘制直方图。
BinLimitsMode
— bin 范围的选择模式
'auto'
(默认) | 'manual'
bin 范围的选择模式,指定为 'auto'
或 'manual'
。默认值是 'auto'
,这样 bin 范围自动调整为该数据。
如果显式指定 BinLimits
或 BinEdges
,则 BinLimitsMode
自动设为 'manual'
。在这种情况下,将 BinLimitsMode
指定为 'auto'
可将 bin 范围重新调整为该数据。
此选项不适用于分类数据的直方图。
BinMethod
— 分 bin 算法
'auto'
(默认) | 'scott'
| 'fd'
| 'integers'
| 'sturges'
| 'sqrt'
| ...
分 bin 算法,指定为此表中的一个值。
值 | 描述 |
---|---|
| 默认的 |
| 如果数据接近正态分布,则 Scott 规则最佳。该规则也适用于大多数的其他分布。它使用 bin 宽度 |
| Freedman-Diaconis 规则对数据中的离群值不太敏感,可能更适用于重尾分布的数据。它使用 bin 宽度 |
| 整数规则对整数数据有用,因为它为每个整数创建一个 bin。它使用 bin 宽度 1 并将 bin 边界放在整数的中间。为避免无意间创建太多 bin,可以使用该规则创建 65536 (216) 个 bin 的限制。如果数据范围大于 65536,则整数规则改用更宽的 bin。 注意
|
| Sturges 规则因其简单性而广受欢迎。它将 bin 数量选择为 |
| 平方根规则是广泛用于其他软件包。它将 bin 数量选择为 |
histogram
并不始终使用这些精确的公式来选择 bin 数目。有时 bin 数目会稍做调整,以便 bin 边界落在“合适”的数字上。
对于日期时间数据,bin 方法可以是下列时间单位之一:
'second' | 'month' |
'minute' | 'quarter' |
'hour' | 'year' |
'day' | 'decade' |
'week' | 'century' |
对于持续时间数据,bin 方法可以是下列时间单位之一:
'second' | 'day' |
'minute' | 'year' |
'hour' |
如果您使用日期时间或持续时间数据指定 BinMethod
,则 histogram
最多可以使用 65,536(即 216)个 bin。如果指定的 bin 持续时间需要多个 bin,则 histogram
使用与最大 bin 数对应的较大的 bin 宽度。
此选项不适用于分类数据的直方图。
注意
如果设置 BinLimits
、NumBins
、BinEdges
或 BinWidth
属性,则 BinMethod
属性设为 'manual'
。
示例: histogram(X,'BinMethod','integers')
创建一个带有以整数为中心的 bin 的直方图。
BinWidth
— bin 的宽度
标量
bin 宽度,指定为标量。指定 BinWidth
时,histogram
最多可以使用 65,536 个 bin(即 216)。如果指定的 bin 宽度需要多个 bin,则 histogram
使用与最大 bin 数量对应的较大的 bin 宽度。
对于日期时间和持续时间数据,'BinWidth'
的值可以是标量持续时间或日历持续时间。
此选项不适用于分类数据的直方图。
示例: histogram(X,'BinWidth',5)
使用宽度为 5 的 bin。
DisplayOrder
— 类别的显示顺序
'data'
(默认) | 'ascend'
| 'descend'
类别的显示顺序,指定为 'ascend'
、'descend'
或 'data'
。对于 'ascend'
或 'descend'
,将按条形高度的递增或递减顺序显示直方图。默认值 'data'
将使用输入数据 C
中的类别顺序。
此选项仅适用于分类数据。
DisplayStyle
— 直方图的显示样式
'bar'
(默认) | 'stairs'
直方图的显示样式,指定为 'bar'
或 'stairs'
。指定 'stairs'
以显示阶梯图,显示直方图的轮廓而不填充内部。
'bar'
的默认值显示直方图的条形图。
示例: histogram(X,'DisplayStyle','stairs')
绘制直方图的轮廓。
EdgeAlpha
— 直方图条形边的透明度
1
(默认) | 介于 0
和 1
(包括二者)之间的标量值
直方图条形边的透明度,指定为介于 0
和 1
(包含这两个边界值)之间的标量值。值 1
表示完全不透明,0
则表示完全透明(不可见)。
示例: histogram(X,'EdgeAlpha',0.5)
创建一个具有半透明条形边的直方图。
EdgeColor
— 直方图的边界颜色
[0 0 0]
或黑色 (默认) | 'none'
| 'auto'
| RGB 三元组 | 十六进制颜色代码 | 颜色名称
直方图的边界颜色,指定为下列值之一:
'none'
- 不绘制边。'auto'
- 每个边界的颜色都是自动选择的。RGB 三元组、十六进制颜色代码或颜色名称 - 边使用指定的颜色。
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"
以下是 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"
示例: histogram(X,'EdgeColor','r')
创建一个带红色条形边界的直方图。
FaceAlpha
— 直方图条形的透明度
0.6
(默认) | 介于 0
和 1
(包括二者)之间的标量值
直方图条形的透明度,指定为介于 0
和 1
(包括二者)之间的标量值。histogram
对所有的直方图条形使用相同的透明度。值 1
表示完全不透明,0
则表示完全透明(不可见)。
示例: histogram(X,'FaceAlpha',1)
创建一个带有完全不透明条形的直方图。
FaceColor
— 直方图的条形颜色
'auto'
(默认) | 'none'
| RGB 三元组 | 十六进制颜色代码 | 颜色名称
直方图的条形颜色,指定为下列值之一:
'none'
- 条形未填充。'auto'
- 直方图条形颜色是自动选择的(默认)。RGB 三元组、十六进制颜色代码或颜色名称 - 用指定的颜色填充条形。
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"
以下是 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"
如果将 DisplayStyle
指定为 'stairs'
,则 histogram
不使用 FaceColor
属性。
示例: histogram(X,'FaceColor','g')
创建一个带绿色条形的直方图。
LineStyle
— 线型
"-"
(默认) | "--"
| ":"
| "-."
| "none"
线型,指定为下表中列出的选项之一。
线型 | 描述 | 表示的线条 |
---|---|---|
"-" | 实线 |
|
"--" | 虚线 |
|
":" | 点线 |
|
"-." | 点划线 |
|
"none" | 无线条 | 无线条 |
LineWidth
— 条形轮廓的宽度
0.5
(默认) | 正值
条形轮廓的宽度,指定为以磅为单位的正值。一磅等于 1/72 英寸。
示例: 1.5
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Normalization
— 归一化类型
'count'
(默认) | 'probability'
| 'countdensity'
| 'pdf'
| 'cumcount'
| 'cdf'
归一化类型,指定为此表中的一个值。对于每个 bin i
:
是 bin 的值。
是 bin 中的元素数目。
是 bin 的宽度。
是输入数据中的元素数目。此值可以大于分 bin 数据元素数,前提是数据中包含
NaN
、NaT
或<undefined>
值,或者某些数据位于 bin 范围外。
值 | bin 值 | 注释 |
---|---|---|
'count' (默认值) |
|
|
'countdensity' |
|
注意
|
'cumcount' |
|
|
'probability' |
|
|
'pdf' |
|
注意
|
'cdf' |
|
|
示例: histogram(X,'Normalization','pdf')
绘制 X
的概率密度函数估算值。
NumDisplayBins
— 要显示的类别数量
标量
要显示的类别数量,指定为标量。您可以使用 'DisplayOrder'
选项更改直方图中显示类别的顺序。
此选项仅适用于分类数据。
Orientation
— 条形方向
'vertical'
(默认) | 'horizontal'
条形方向,指定为 'vertical'
或 'horizontal'
。
示例: histogram(X,'Orientation','horizontal')
创建一个带水平条形的直方图。
ShowOthers
— 切换未显示类别的数据汇总的显示
'off'
(默认) | on/off 逻辑值
切换未显示类别的数据汇总的显示,指定为 'on'
或 'off'
,或者指定为数值或逻辑值 1
(true
) 或 0
(false
)。值 'on'
等效于 true
,'off'
等效于 false
。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState
类型的 on/off 逻辑值。
将此选项设置为 'on'
将在直方图中显示一个名为 'Others'
的附加条形。此附加条形用于统计不属于直方图中已显示类别的所有元素。
您可以使用 'NumDisplayBins'
和 'DisplayOrder'
选项更改直方图中显示的类别数量及其顺序。
此选项仅适用于分类数据。
输出参数
h
— 直方图
对象
直方图,以对象的形式返回。有关详细信息,请参阅 Histogram 属性。
属性
Histogram 属性 | 直方图的外观和行为 |
示例
向量直方图
生成 10,000 个随机数并创建直方图。histogram
函数自动选择合适的 bin 数量,以便涵盖 x
中的值范围并显示基本分布的形状。
x = randn(10000,1); h = histogram(x)
h = Histogram with properties: Data: [10000x1 double] Values: [2 2 1 6 7 17 29 57 86 133 193 271 331 421 540 613 ... ] NumBins: 37 BinEdges: [-3.8000 -3.6000 -3.4000 -3.2000 -3 -2.8000 -2.6000 ... ] BinWidth: 0.2000 BinLimits: [-3.8000 3.6000] Normalization: 'count' FaceColor: 'auto' EdgeColor: [0 0 0] Show all properties
指定 histogram
函数的输出参数时,它返回一个二元直方图对象。可以使用该对象检查直方图的属性,例如 bin 数量或宽度。
计算直方图的 bin 数量。
nbins = h.NumBins
nbins = 37
指定直方图的 bin 数量
对分类为 25 个等距 bin 的 1,000 个随机数绘制直方图。
x = randn(1000,1); nbins = 25; h = histogram(x,nbins)
h = Histogram with properties: Data: [1000x1 double] Values: [1 3 0 6 14 19 31 54 74 80 92 122 104 115 88 80 38 32 ... ] NumBins: 25 BinEdges: [-3.4000 -3.1200 -2.8400 -2.5600 -2.2800 -2 -1.7200 ... ] BinWidth: 0.2800 BinLimits: [-3.4000 3.6000] Normalization: 'count' FaceColor: 'auto' EdgeColor: [0 0 0] Show all properties
求 bin 计数。
counts = h.Values
counts = 1×25
1 3 0 6 14 19 31 54 74 80 92 122 104 115 88 80 38 32 21 9 5 5 5 0 2
更改直方图的 bin 数量
生成 1,000 个随机数并创建直方图。
X = randn(1000,1); h = histogram(X)
h = Histogram with properties: Data: [1000x1 double] Values: [3 1 2 15 17 27 53 79 85 101 127 110 124 95 67 32 27 ... ] NumBins: 23 BinEdges: [-3.3000 -3.0000 -2.7000 -2.4000 -2.1000 -1.8000 ... ] BinWidth: 0.3000 BinLimits: [-3.3000 3.6000] Normalization: 'count' FaceColor: 'auto' EdgeColor: [0 0 0] Show all properties
使用 morebins
函数粗略调整 bin 数量。
Nbins = morebins(h); Nbins = morebins(h)
Nbins = 29
通过显式设置 bin 数按精细颗粒级别调整 bin。
h.NumBins = 31;
指定直方图的 bin 边界
生成 1,000 个随机数并创建直方图。将 bin 边界指定为向量,使宽 bin 在直方图的两边,以捕获不满足 的离群值。第一个向量元素是第一个 bin 的左边界,而最后一个向量元素是最后一个 bin 的右边界。
x = randn(1000,1); edges = [-10 -2:0.25:2 10]; h = histogram(x,edges);
将 Normalization
属性指定为 'countdensity'
以使包含离群值的 bin 扁平化。现在,每个 bin 的区域(而不是高度)表示该 bin 的观测值频率。
h.Normalization = 'countdensity';
绘制分类直方图
创建一个表示投票的分类向量。该向量中的类别是 'yes'
、'no'
或 'undecided'
。
A = [0 0 1 1 1 0 0 0 0 NaN NaN 1 0 0 0 1 0 1 0 1 0 0 0 1 1 1 1]; C = categorical(A,[1 0 NaN],{'yes','no','undecided'})
C = 1x27 categorical
Columns 1 through 9
no no yes yes yes no no no no
Columns 10 through 16
undecided undecided yes no no no yes
Columns 17 through 25
no yes no yes no no no yes yes
Columns 26 through 27
yes yes
使用相对条形宽度 0.5
绘制投票的分类直方图。
h = histogram(C,'BarWidth',0.5)
h = Histogram with properties: Data: [no no yes yes yes no no ... ] Values: [11 14 2] NumDisplayBins: 3 Categories: {'yes' 'no' 'undecided'} DisplayOrder: 'data' Normalization: 'count' DisplayStyle: 'bar' FaceColor: 'auto' EdgeColor: [0 0 0] Show all properties
具有指定归一化的直方图
生成 1,000 个随机数并使用 'probability'
归一化创建直方图。
x = randn(1000,1); h = histogram(x,'Normalization','probability')
h = Histogram with properties: Data: [1000x1 double] Values: [0.0030 1.0000e-03 0.0020 0.0150 0.0170 0.0270 0.0530 ... ] NumBins: 23 BinEdges: [-3.3000 -3.0000 -2.7000 -2.4000 -2.1000 -1.8000 ... ] BinWidth: 0.3000 BinLimits: [-3.3000 3.6000] Normalization: 'probability' FaceColor: 'auto' EdgeColor: [0 0 0] Show all properties
计算条形高度的总和。通过该归一化,每个条形的高度等于在该 bin 间隔内选择观测值的概率,并且所有条形的高度总和为 1。
S = sum(h.Values)
S = 1
绘制多个直方图
生成两个随机数向量并在同一图窗中针对每个向量绘制对应的一个直方图。
x = randn(2000,1);
y = 1 + randn(5000,1);
h1 = histogram(x);
hold on
h2 = histogram(y);
由于直方图的示例大小和 bin 宽度不同,很难将它们进行比较。对这些直方图进行归一化,这样所有的条形高度相加的结果为 1 并使用统一的 bin 宽度。
h1.Normalization = 'probability'; h1.BinWidth = 0.25; h2.Normalization = 'probability'; h2.BinWidth = 0.25;
调整直方图属性
生成 1,000 个随机数并创建直方图。返回直方图对象以调整该直方图的属性,无需重新创建整个绘图。
x = randn(1000,1); h = histogram(x)
h = Histogram with properties: Data: [1000x1 double] Values: [3 1 2 15 17 27 53 79 85 101 127 110 124 95 67 32 27 ... ] NumBins: 23 BinEdges: [-3.3000 -3.0000 -2.7000 -2.4000 -2.1000 -1.8000 ... ] BinWidth: 0.3000 BinLimits: [-3.3000 3.6000] Normalization: 'count' FaceColor: 'auto' EdgeColor: [0 0 0] Show all properties
准确指定要使用的 bin 数量。
h.NumBins = 15;
通过向量指定 bin 边界。向量中的第一个值是第一个 bin 的左边界。最后一个值是最后一个 bin 的右边界。
h.BinEdges = [-3:3];
更改直方图条形的颜色。
h.FaceColor = [0 0.5 0.5];
h.EdgeColor = 'r';
确定基本概率分布
生成 5,000 个均值为 5、标准差为 2 的正态分布随机数。在 Normalization
设为 'pdf'
的情况下绘制直方图可生成概率密度函数的估计值。
x = 2*randn(5000,1) + 5; histogram(x,'Normalization','pdf')
在本示例中,已知正态分布数据的基本分布。但是,通过将它与已知的概率密度函数进行对比,可以使用 'pdf'
直方图确定该数据的基础概率分布。
均值为 、标准差为 以及方差为 的正态分布的概率密度函数是:
对于均值为 5、标准差为 2 的正态分布,叠加一个概率密度函数图。
hold on y = -5:0.1:15; mu = 5; sigma = 2; f = exp(-(y-mu).^2./(2*sigma^2))./(sigma*sqrt(2*pi)); plot(y,f,'LineWidth',1.5)
保存并加载直方图对象
使用 savefig
函数保存 histogram
图窗。
histogram(randn(10)); savefig('histogram.fig'); close gcf
使用 openfig
重新将直方图加载到 MATLAB®。openfig
也返回图窗 h
的句柄。
h = openfig('histogram.fig');
使用 findobj
函数从图窗句柄中查找正确的对象句柄。这样,您可以继续处理用于生成图窗的原始直方图对象。
y = findobj(h,'type','histogram')
y = Histogram with properties: Data: [10x10 double] Values: [2 17 28 32 16 3 2] NumBins: 7 BinEdges: [-3 -2 -1 0 1 2 3 4] BinWidth: 1 BinLimits: [-3 4] Normalization: 'count' FaceColor: 'auto' EdgeColor: [0 0 0] Show all properties
提示
使用
histogram
创建的直方图在绘图编辑模式下提供上下文菜单,以允许在图窗窗口中进行交互式操作。例如,您可以使用上下文菜单以交互方式更改 bin 的数量、对齐多个直方图或更改显示顺序。当您向直方图添加数据提示时,它们会显示 bin 边界和 bin 计数。
扩展功能
tall 数组
对行数太多而无法放入内存的数组进行计算。
此函数支持 tall 数组,但存在以下限制:
不支持某些输入选项。允许使用的选项包括:
'BinWidth'
'BinLimits'
'Normalization'
'DisplayStyle'
'BinMethod'
-'auto'
和'scott'
是相同的 bin 方法。不支持'fd'
bin 方法。'EdgeAlpha'
'EdgeColor'
'FaceAlpha'
'FaceColor'
'LineStyle'
'LineWidth'
'Orientation'
此外,条形的最大数量存在上限。默认最大值为 100。
不支持
morebins
和fewerbins
方法。不支持编辑需要重新计算 bin 的直方图对象属性。
有关详细信息,请参阅 使用 tall 数组处理无法放入内存的数据。
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)。
版本历史记录
在 R2014b 中推出
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)