Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

histogram

直方图

  • Histogram plot

说明

直方图属于数值数据的条形图类型,将数据分组为 bin。创建 Histogram 对象后,可以通过更改直方图的属性值修改它的各个方面。这对快速修改 bin 属性或更改显示特别有用。

创建对象

描述

示例

histogram(X) 基于 X 创建直方图。histogram 函数使用自动分 bin 算法,然后返回均匀宽度的 bin,这些 bin 可涵盖 X 中的元素范围并显示分布的基本形状。histogram 将 bin 显示为矩形,这样每个矩形的高度就表示 bin 中的元素数量。

示例

histogram(X,nbins) 使用标量 nbins 指定的 bin 数量。

示例

histogram(X,edges)X 划分为由向量 edges 来指定 bin 边界的 bin。每个 bin 都包含左边界,但不包含右边界,除了同时包含两个边界的最后一个 bin 外。

histogram('BinEdges',edges,'BinCounts',counts) 手动指定 bin 边界和关联的 bin 计数。histogram 绘制指定的 bin 计数,而不执行任何数据分 bin。

示例

histogram(C)(其中 C 为分类数组)通过为 C 中的每个类别绘制一个条形来绘制直方图。

histogram(C,Categories) 仅绘制 Categories 指定的类别的子集。

histogram('Categories',Categories,'BinCounts',counts) 手动指定类别和关联的 bin 计数。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 属性

输入参数

全部展开

要分布到各 bin 的数据,指定为向量、矩阵或多维数组。如果 X 不是向量,则 histogram 将它视作单列向量 X(:) 并绘制一个直方图。

histogram 忽略所有 NaNNaT 值。同样,histogram 忽略 Inf-Inf 值,除非 bin 边界将 Inf-Inf 显式指定为 bin 边界。虽然 NaNNaTInf-Inf 值通常情况下不会绘制,但在包括所有数据元素的归一化计算(如 'probability')中,仍然会包含这些值。

注意

如果 X 包含类型为 int64uint64 且大于 flintmax 的整数,则建议您显式指定直方图 bin 边界。histogram 会自动使用双精度对输入数据进行分 bin,这些数据缺少大于 flintmax 的数字的整数精度。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | datetime | duration

分类数据,指定为分类数组。histogram 不会绘制未定义的分类值。但在包括所有数据元素的归一化计算(如 'probability')中,仍然会包含未定义的分类值。

数据类型: categorical

bin 数量,指定为正整数。如果不指定 nbins,则 histogram 基于 X 中的值自动计算将使用多少个 bin。

示例: histogram(X,15) 创建一个带 15 个 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

注意

此选项仅适用于分类直方图。

直方图中包含的类别,指定为字符向量元胞数组、分类数组、字符串数组或 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

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])

目标坐标区,指定为 Axes 对象或 PolarAxes 对象。如果您不指定坐标区而且当前坐标区是笛卡尔坐标区,histogram 函数将使用当前坐标区 (gca)。要在极坐标区上绘图,请指定 PolarAxes 对象作为第一个输入参数,或者使用 polarhistogram 函数。

名称-值参数

将可选的参数对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参数名称,Value 是对应的值。名称-值参数必须出现在其他参数之后,但参数对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: histogram(X,'BinWidth',5)

此处所列的直方图属性只是子集。有关完整列表,请参阅 Histogram 属性

注意

此选项仅适用于分类数据的直方图。

分类条形的相对宽度,指定为 [0,1] 范围中的一个标量值。使用此属性可控制直方图内各分类条形的间隔。默认值是 0.9,表示条形宽度占从上一条形到下一条形之间的空间的 90%,两侧各占该空间的 5%。

如果您将该属性设置为 1,则相邻的条形将紧挨在一起。

示例: 0.5

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

bin 范围,指定为二元素向量 [bmin,bmax]。该选项使用输入数组 X 中介于 bminbmax(含二者)之间的值绘制直方图。即 X(X>=bmin & X<=bmax)

此选项不适用于分类数据的直方图。

示例: histogram(X,'BinLimits',[1,10]) 仅使用 X 中介于 110(含二者)之间的值绘制直方图。

bin 范围的选择模式,指定为 'auto''manual'。默认值是 'auto',这样 bin 范围自动调整为该数据。

如果显式指定 BinLimitsBinEdges,则 BinLimitsMode 自动设为 'manual'。在这种情况下,将 BinLimitsMode 指定为 'auto' 可将 bin 范围重新调整为该数据。

此选项不适用于分类数据的直方图。

分 bin 算法,指定为此表中的一个值。

描述

'auto'

默认的 'auto' 算法选择一个 bin 宽度,以便涵盖数据范围并显示基础分布形状。

'scott'

如果数据接近正态分布,则 Scott 规则最佳。该规则也适用于大多数的其他分布。它使用 bin 宽度 3.5*std(X(:))*numel(X)^(-1/3)

'fd'

Freedman-Diaconis 规则对数据中的离群值不太敏感,可能更适用于重尾分布的数据。它使用 bin 宽度 2*IQR(X(:))*numel(X)^(-1/3),其中 IQRX 的四分位差。

'integers'

整数规则对整数数据有用,因为它为每个整数创建一个 bin。它使用 bin 宽度 1 并将 bin 边界放在整数的中间。为避免无意间创建太多 bin,可以使用该规则创建 65536 (216) 个 bin 的限制。如果数据范围大于 65536,则整数规则改用更宽的 bin。

注意

'integers' 不支持日期时间和持续时间数据。

'sturges'

Sturges 规则因其简单性而广受欢迎。它将 bin 数量选择为 ceil(1 + log2(numel(X)))

'sqrt'

平方根规则是广泛用于其他软件包。它将 bin 数量选择为 ceil(sqrt(numel(X)))

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 宽度。

此选项不适用于分类数据的直方图。

注意

如果设置 BinLimitsNumBinsBinEdgesBinWidth 属性,则 BinMethod 属性设为 'manual'

示例: histogram(X,'BinMethod','integers') 创建一个带有以整数为中心的 bin 的直方图。

bin 宽度,指定为标量。指定 BinWidth 时,histogram 最多可以使用 65,536 个 bin(即 216)。如果指定的 bin 宽度需要多个 bin,则 histogram 使用与最大 bin 数量对应的较大的 bin 宽度。

对于日期时间和持续时间数据,'BinWidth' 的值可以是标量持续时间或日历持续时间。

此选项不适用于分类数据的直方图。

示例: histogram(X,'BinWidth',5) 使用宽度为 5 的 bin。

类别的显示顺序,指定为 'ascend''descend''data'。对于 'ascend''descend',将按条形高度的递增或递减顺序显示直方图。默认值 'data' 将使用输入数据 C 中的类别顺序。

此选项仅适用于分类数据。

直方图的显示样式,指定为 'bar''stairs'。指定 'stairs' 以显示阶梯图,显示直方图的轮廓而不填充内部。

'bar' 的默认值显示直方图的条形图。

示例: histogram(X,'DisplayStyle','stairs') 绘制直方图的轮廓。

直方图条形边的透明度,指定为介于 01(包含这两个边界值)之间的标量值。值 1 表示完全不透明,0 则表示完全透明(不可见)。

示例: histogram(X,'EdgeAlpha',0.5) 创建一个具有半透明条形边的直方图。

直方图的边界颜色,指定为下列值之一:

  • 'none' - 不绘制边。

  • 'auto' - 每个边界的颜色都是自动选择的。

  • RGB 三元组、十六进制颜色代码或颜色名称 - 边使用指定的颜色。

    RGB 三元组和十六进制颜色代码对于指定自定义颜色非常有用。

    • RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于 [0,1] 范围内,例如 [0.4 0.6 0.7]

    • 十六进制颜色代码是字符向量或字符串标量,以井号 (#) 开头,后跟三个或六个十六进制数字,范围可以是 0F。这些值不区分大小写。因此,颜色代码 '#FF8800''#ff8800''#F80''#f80' 是等效的。

    此外,还可以按名称指定一些常见的颜色。下表列出了命名颜色选项、等效 RGB 三元组和十六进制颜色代码。

    颜色名称短名称RGB 三元组十六进制颜色代码外观
    "red""r"[1 0 0]"#FF0000"

    Sample of the color red

    "green""g"[0 1 0]"#00FF00"

    Sample of the color green

    "blue""b"[0 0 1]"#0000FF"

    Sample of the color blue

    "cyan" "c"[0 1 1]"#00FFFF"

    Sample of the color cyan

    "magenta""m"[1 0 1]"#FF00FF"

    Sample of the color magenta

    "yellow""y"[1 1 0]"#FFFF00"

    Sample of the color yellow

    "black""k"[0 0 0]"#000000"

    Sample of the color black

    "white""w"[1 1 1]"#FFFFFF"

    Sample of the color white

    以下是 MATLAB® 在许多类型的绘图中使用的默认颜色的 RGB 三元组和十六进制颜色代码。

    RGB 三元组十六进制颜色代码外观
    [0 0.4470 0.7410]"#0072BD"

    Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

    [0.8500 0.3250 0.0980]"#D95319"

    Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

    [0.9290 0.6940 0.1250]"#EDB120"

    Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

    [0.4940 0.1840 0.5560]"#7E2F8E"

    Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

    [0.4660 0.6740 0.1880]"#77AC30"

    Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

    [0.3010 0.7450 0.9330]"#4DBEEE"

    Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

    [0.6350 0.0780 0.1840]"#A2142F"

    Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

示例: histogram(X,'EdgeColor','r') 创建一个带红色条形边界的直方图。

直方图条形的透明度,指定为介于 01(包括二者)之间的标量值。histogram 对所有的直方图条形使用相同的透明度。值 1 表示完全不透明,0 则表示完全透明(不可见)。

示例: histogram(X,'FaceAlpha',1) 创建一个带有完全不透明条形的直方图。

直方图的条形颜色,指定为下列值之一:

  • 'none' - 条形未填充。

  • 'auto' - 直方图条形颜色是自动选择的(默认)。

  • RGB 三元组、十六进制颜色代码或颜色名称 - 用指定的颜色填充条形。

    RGB 三元组和十六进制颜色代码对于指定自定义颜色非常有用。

    • RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于 [0,1] 范围内,例如 [0.4 0.6 0.7]

    • 十六进制颜色代码是字符向量或字符串标量,以井号 (#) 开头,后跟三个或六个十六进制数字,范围可以是 0F。这些值不区分大小写。因此,颜色代码 '#FF8800''#ff8800''#F80''#f80' 是等效的。

    此外,还可以按名称指定一些常见的颜色。下表列出了命名颜色选项、等效 RGB 三元组和十六进制颜色代码。

    颜色名称短名称RGB 三元组十六进制颜色代码外观
    "red""r"[1 0 0]"#FF0000"

    Sample of the color red

    "green""g"[0 1 0]"#00FF00"

    Sample of the color green

    "blue""b"[0 0 1]"#0000FF"

    Sample of the color blue

    "cyan" "c"[0 1 1]"#00FFFF"

    Sample of the color cyan

    "magenta""m"[1 0 1]"#FF00FF"

    Sample of the color magenta

    "yellow""y"[1 1 0]"#FFFF00"

    Sample of the color yellow

    "black""k"[0 0 0]"#000000"

    Sample of the color black

    "white""w"[1 1 1]"#FFFFFF"

    Sample of the color white

    以下是 MATLAB 在许多类型的绘图中使用的默认颜色的 RGB 三元组和十六进制颜色代码。

    RGB 三元组十六进制颜色代码外观
    [0 0.4470 0.7410]"#0072BD"

    Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

    [0.8500 0.3250 0.0980]"#D95319"

    Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

    [0.9290 0.6940 0.1250]"#EDB120"

    Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

    [0.4940 0.1840 0.5560]"#7E2F8E"

    Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

    [0.4660 0.6740 0.1880]"#77AC30"

    Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

    [0.3010 0.7450 0.9330]"#4DBEEE"

    Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

    [0.6350 0.0780 0.1840]"#A2142F"

    Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

如果将 DisplayStyle 指定为 'stairs',则 histogram 不使用 FaceColor 属性。

示例: histogram(X,'FaceColor','g') 创建一个带绿色条形的直方图。

线型,指定为下表中列出的选项之一。

线型描述表示的线条
"-"实线

Sample of solid line

"--"虚线

Sample of dashed line

":"点线

Sample of dotted line

"-."点划线

Sample of dash-dotted line, with alternating dashes and dots

"none"无线条无线条

条形轮廓的宽度,指定为以磅为单位的正值。一磅等于 1/72 英寸。

示例: 1.5

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

归一化类型,指定为此表中的一个值。对于每个 bin i

  • vi 是 bin 的值。

  • ci 是 bin 中的元素数目。

  • wi 是 bin 的宽度。

  • N 是输入数据中的元素数目。此值可以大于分 bin 数据元素数,前提是数据中包含 NaNNaT<undefined> 值,或者某些数据位于 bin 范围外。

bin 值注释
'count'(默认值)

vi=ci

  • 观测值的计数或频率。

  • bin 值之和小于或等于 numel(X)。仅当某些输入数据不在 bin 中时,bin 值之和才会小于 numel(X)

  • 对于分类数据,bin 值之和小于或等于 numel(X)sum(ismember(X(:),Categories))

'countdensity'

vi=ciwi

  • 按 bin 的宽度进行换算的计数或频率。

  • 每个条形的面积(高 * 宽)是观测值在 bin 中的数量。条形面积之和小于或等于 numel(X)

  • 对于分类直方图,这与 'count' 相同。

注意

'countdensity' 不支持日期时间和持续时间数据。

'cumcount'

vi=j=1icj

  • 累积计数。每个 bin 的值等于该 bin 及以前的所有 bin 中的累积观测值数量。

  • 最后一个条形的高度小于或等于 numel(X)

  • 对于分类直方图,最后一个条形的高度小于或等于 numel(X)sum(ismember(X(:),Categories))

'probability'

vi=ciN

  • 相对概率。

  • 条形高度之和小于或等于 1

'pdf'

vi=ciNwi

  • 概率密度函数的估计值。

  • 每个条形的面积是相对的观测值数量。条形面积之和小于或等于 1

  • 对于分类直方图,这与 'probability' 相同。

注意

'pdf' 不支持日期时间和持续时间数据。

'cdf'

vi=j=1icjN

  • 累积的密度函数估算值。

  • 每个条形的高度等于该 bin 及以前的所有 bin 中累积的相对观测值数量。最后一个条形的高度小于或等于 1

  • 对于分类数据,每个条形的高度等于每个类别和所有先前类别中观测值的累积相对数量。

示例: histogram(X,'Normalization','pdf') 绘制 X 的概率密度函数估算值。

要显示的类别数量,指定为标量。您可以使用 'DisplayOrder' 选项更改直方图中显示类别的顺序。

此选项仅适用于分类数据。

条形方向,指定为 'vertical''horizontal'

示例: histogram(X,'Orientation','horizontal') 创建一个带水平条形的直方图。

切换未显示类别的数据汇总的显示,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

将此选项设置为 'on' 将在直方图中显示一个名为 'Others' 的附加条形。此附加条形用于统计不属于直方图中已显示类别的所有元素。

您可以使用 'NumDisplayBins''DisplayOrder' 选项更改直方图中显示的类别数量及其顺序。

此选项仅适用于分类数据。

输出参数

全部展开

直方图,以对象的形式返回。有关详细信息,请参阅 Histogram 属性

属性

Histogram 属性直方图的外观和行为

对象函数

morebins增加直方图的 bin 数量
fewerbins减少直方图 bin 数量

示例

全部折叠

生成 10,000 个随机数并创建直方图。histogram 函数自动选择合适的 bin 数量,以便涵盖 x 中的值范围并显示基本分布的形状。

x = randn(10000,1);
h = histogram(x)

Figure contains an axes object. The axes object contains an object of type histogram.

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

对分类为 25 个等距 bin 的 1,000 个随机数绘制直方图。

x = randn(1000,1);
nbins = 25;
h = histogram(x,nbins)

Figure contains an axes object. The axes object contains an object of type histogram.

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

生成 1,000 个随机数并创建直方图。

X = randn(1000,1);
h = histogram(X)

Figure contains an axes object. The axes object contains an object of type histogram.

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)

Figure contains an axes object. The axes object contains an object of type histogram.

Nbins = 29

通过显式设置 bin 数按精细颗粒级别调整 bin。

h.NumBins = 31;

Figure contains an axes object. The axes object contains an object of type histogram.

生成 1,000 个随机数并创建直方图。将 bin 边界指定为向量,使宽 bin 在直方图的两边,以捕获不满足 |x|<2 的离群值。第一个向量元素是第一个 bin 的左边界,而最后一个向量元素是最后一个 bin 的右边界。

x = randn(1000,1);
edges = [-10 -2:0.25:2 10];
h = histogram(x,edges);

Figure contains an axes object. The axes object contains an object of type histogram.

Normalization 属性指定为 'countdensity' 以使包含离群值的 bin 扁平化。现在,每个 bin 的区域(而不是高度)表示该 bin 的观测值频率。

h.Normalization = 'countdensity';

Figure contains an axes object. The axes object contains an object of type histogram.

创建一个表示投票的分类向量。该向量中的类别是 '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)

Figure contains an axes object. The axes object contains an object of type categoricalhistogram.

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')

Figure contains an axes object. The axes object contains an object of type histogram.

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);

Figure contains an axes object. The axes object contains 2 objects of type histogram.

由于直方图的示例大小和 bin 宽度不同,很难将它们进行比较。对这些直方图进行归一化,这样所有的条形高度相加的结果为 1 并使用统一的 bin 宽度。

h1.Normalization = 'probability';
h1.BinWidth = 0.25;
h2.Normalization = 'probability';
h2.BinWidth = 0.25;

Figure contains an axes object. The axes object contains 2 objects of type histogram.

生成 1,000 个随机数并创建直方图。返回直方图对象以调整该直方图的属性,无需重新创建整个绘图。

x = randn(1000,1);
h = histogram(x)

Figure contains an axes object. The axes object contains an object of type histogram.

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;

Figure contains an axes object. The axes object contains an object of type histogram.

通过向量指定 bin 边界。向量中的第一个值是第一个 bin 的左边界。最后一个值是最后一个 bin 的右边界。

h.BinEdges = [-3:3];

Figure contains an axes object. The axes object contains an object of type histogram.

更改直方图条形的颜色。

h.FaceColor = [0 0.5 0.5];
h.EdgeColor = 'r';

Figure contains an axes object. The axes object contains an object of type histogram.

生成 5,000 个均值为 5、标准差为 2 的正态分布随机数。在 Normalization 设为 'pdf' 的情况下绘制直方图可生成概率密度函数的估计值。

x = 2*randn(5000,1) + 5;
histogram(x,'Normalization','pdf')

Figure contains an axes object. The axes object contains an object of type histogram.

在本示例中,已知正态分布数据的基本分布。但是,通过将它与已知的概率密度函数进行对比,可以使用 'pdf' 直方图确定该数据的基础概率分布。

均值为 μ、标准差为 σ 以及方差为 σ2 的正态分布的概率密度函数是:

f(x,μ,σ)=1σ2π exp[-(x-μ)22σ2].

对于均值为 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)

Figure contains an axes object. The axes object contains 2 objects of type histogram, line.

使用 savefig 函数保存 histogram 图窗。

histogram(randn(10));
savefig('histogram.fig');
close gcf

使用 openfig 重新将直方图加载到 MATLAB®。openfig 也返回图窗 h 的句柄。

h = openfig('histogram.fig');

Figure contains an axes object. The axes object contains an object of type histogram.

使用 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 计数。

扩展功能

版本历史记录

在 R2014b 中推出