本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

boxplot

用箱线图可视化汇总统计量

说明

示例

boxplot(x) 创建 x 中数据的箱线图。如果 x 是向量,boxplot 绘制一个箱子。如果 x 是矩阵,boxplotx 的每列绘制一个箱子。

在每个箱子上,中心标记表示中位数,箱子的底边和顶边分别表示第 25 个和 75 个百分位数。须线会延伸到不是离群值的最远端数据点,离群值会以 '+' 符号单独绘制。

示例

boxplot(x,g) 使用 g 中包含的一个或多个分组变量创建箱线图。boxplot 为具有相同的一个或多个 g 值的各组 x 值创建一个单独的箱子

boxplot(ax,___) 使用坐标区图形对象 ax 指定的坐标区和任何上述语法创建箱线图。

示例

boxplot(___,Name,Value) 使用由一个或多个 Name,Value 对组参数指定的附加选项创建箱线图。例如,您可以指定箱子样式或顺序。

示例

全部折叠

加载样本数据。

load carsmall

创建一个表示每加仑英里数 (MPG) 测量值的箱线图。添加标题并为坐标区加标签。

boxplot(MPG)
xlabel('All Vehicles')
ylabel('Miles per Gallon (MPG)')
title('Miles per Gallon for All Vehicles')

箱线图显示,样本数据中所有车辆的每加仑英里数的中位数约为 24 英里。最小值约为 9,最大值约为 44。

加载样本数据。

load carsmall

根据样本数据创建每加仑英里数 (MPG) 测量值的箱线图,按车辆的原产国 (Origin) 分组。添加标题并为坐标区加标签。

boxplot(MPG,Origin)
title('Miles per Gallon by Vehicle Origin')
xlabel('Country of Origin')
ylabel('Miles per Gallon (MPG)')

每个箱子直观地表示来自指定国家/地区的汽车的 MPG 数据。意大利的“箱子”显示为一条线,因为样本数据只包含该组的一个观测值。

生成两组样本数据。第一个样本 x1 包含从 mu = 5sigma = 1 的正态分布生成的随机数。第二个样本 x2 包含从 mu = 6sigma = 1 的正态分布生成的随机数。

rng default  % For reproducibility
x1 = normrnd(5,1,100,1);
x2 = normrnd(6,1,100,1);

创建 x1x2 的带缺口的箱线图。用对应的 mu 值对每个箱子加标签。

figure
boxplot([x1,x2],'Notch','on','Labels',{'mu = 5','mu = 6'})
title('Compare Random Data from Different Distributions')

箱线图显示两个组的中位数之间的差值约为 1。由于箱线图中的缺口不重叠,可以有 95% 的置信度认为真实的中位数不同。

下图显示了相同数据的箱线图,其中最大须线长度指定为四分位差的 1.0 倍。须线以外的数据点使用 + 显示。

figure
boxplot([x1,x2],'Notch','on','Labels',{'mu = 5','mu = 6'},'Whisker',1)
title('Compare Random Data from Different Distributions')

须线越短,boxplot 将越多的数据点显示为离群值。

创建从标准正态分布生成的一个 100×25 随机数矩阵,用作样本数据。

rng default  % For reproducibility
x = randn(100,25);

在同一图上为 x 中的数据创建两个箱线图。顶部图使用默认格式,底部图使用紧凑格式。

figure

subplot(2,1,1)
boxplot(x)

subplot(2,1,2)
boxplot(x,'PlotStyle','compact')

每个图显示相同的数据,但紧凑格式可以提高具有多个箱子的图的可读性。

通过使用分组变量为不同长度的数据向量创建箱线图。

随机生成三个不同长度的列向量:长度分别为 51015。将数据合并为一个长度为 30 的列向量。

rng('default')  % For reproducibility
x1 = rand(5,1);
x2 = rand(10,1);
x3 = rand(15,1);
x = [x1; x2; x3];

创建一个分组变量,将同一值赋给 x 中来自于同一向量的行。例如,g 的前五行具有相同的值 First,因为 x 的前五行都来自同一个向量 x1

g1 = repmat({'First'},5,1);
g2 = repmat({'Second'},10,1);
g3 = repmat({'Third'},15,1);
g = [g1; g2; g3];

创建箱线图。

boxplot(x,g)

输入参数

全部折叠

输入数据,指定为数值向量或数值矩阵。如果 x 是向量,boxplot 绘制一个箱子。如果 x 是矩阵,boxplotx 的每列绘制一个箱子。

在每个箱子上,中心标记表示中位数,箱子的底边和顶边分别表示第 25 个和 75 个百分位数。须线会延伸到不是离群值的最远端数据点,离群值会以 '+' 符号单独绘制。

数据类型: single | double

分组变量,指定为数值向量、字符数组、字符串数组、元胞数组或分类数组。您可以通过使用上述变量类型的元胞数组或矩阵在 g 中指定多个分组变量。如果指定多个分组变量,它们必须具有相同的长度。

如果 x 是向量,则对于 x 的每个元素,分组变量都包含一个对应的行。如果 x 是矩阵,则对于 x 的每个列,分组变量都包含一个对应的行。分组变量中包含缺失值 (NaN)、空字符向量、空值或 <missing> 字符串或 <undefined> 值的组将被忽略,并且不会计入其他参数考虑的组数中。

默认情况下,boxplot 按在数据中最初出现的顺序对字符和字符串分组变量进行排序,按水平顺序对分类分组变量进行排序,并按数值顺序对数值分组变量进行排序。要控制组的顺序,请执行以下操作之一:

  • g 中使用分类变量,并指定其水平的顺序。

  • 使用 'GroupOrder' 名称-值对组参数。

  • 对您的数据进行预先排序。

数据类型: single | double | char | string | cell | categorical

用于绘图的坐标区,指定为坐标区图形对象。如果未指定 ax,则 boxplot 使用当前轴创建绘图。有关创建坐标区图形对象的详细信息,请参阅 axesAxes 属性

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在引号内。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN 所示。

示例: 'Notch','on','Labels',{'mu = 5','mu = 6'} 创建带缺口的箱线图,并从左到右对两个箱子 mu = 5mu = 6 加标签
箱子外观

全部折叠

箱子样式,指定为以逗号分隔的对组,其中包含 'BoxStyle' 和下列项之一。

名称
'outline'使用带虚须线的空心箱绘制箱子。如果 'PlotStyle''traditional',这是默认值。
'filled'使用带实须线的窄实心箱绘制箱子。如果 'PlotStyle''compact',这是默认值。

示例: 'BoxStyle','filled'

箱子颜色,指定为以逗号分隔的对组,其中包含 'Colors' 和 RGB 三元组、字符向量或字符串标量。RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。每个强度必须在 [0,1] 范围内。

下表列出了可用的颜色字符及其等效的 RGB 三元组值。

长名称短名称RGB 三元组
黄色'y'[1 1 0]
品红'm'[1 0 1]
青色'c'[0 1 1]
红色'r'[1 0 0]
绿色'g'[0 1 0]
蓝色'b'[0 0 1]
白色'w'[1 1 1]
黑色'k'[0 0 0]

您可以将多种颜色指定为字符向量或颜色名称的字符串标量(例如,'rgbm')或包含 RGB 值的三列矩阵。序列会根据需要复制或截断,例如,'rb' 会交替显示红色和蓝色的箱子。

如果未指定名称-值对组 'ColorGroup',则 boxplot 对所有箱子使用相同的颜色方案。如果您指定 'ColorGroup',则默认为修改后的 hsv colormap

示例: 'Colors','rgbm'

中位数样式,指定为以逗号分隔的对组,其中包含 'MedianStyle' 和下列项之一。

名称
'line'画一条线来表示每个箱子中的中位数。当 'PlotStyle''traditional' 时,这是默认值。
'target'绘制带黑心的圆来表示每个箱子的中位数。当 'PlotStyle''compact' 时,这是默认值。

示例: 'MedianStyle','target'

比较区间的标记,指定为以逗号分隔的对组,其中包含 'Notch' 和下列项之一。

名称
'off'在箱子显示中省略比较区间。
'on'如果 'PlotStyle''traditional',则使用缺口绘制比较区间。如果 'PlotStyle''compact',则使用三角形标记绘制比较区间。
'marker'使用三角形标记绘制比较区间。

如果两个中位数的区间不重叠,则这两个中位数在 5% 显著性水平上有显著差异。boxplot 使用缺口的极值或三角形标记的中心表示区间端点。缺口极值对应于 q2 – 1.57(q3 – q1)/sqrt(n)q2 + 1.57(q3 – q1)/sqrt(n),其中 q2 是中位数(第 50 百分位数),q1q3 分别是第 25 个和第 75 个百分位数,n 是没有任何 NaN 值的观测值的数目。如果样本量很小,缺口可能会超出箱子的末端。

示例: 'Notch','on'

离群值的标记大小,指定为由 'OutlierSize' 和正数值组成的以逗号分隔的对组。指定的值表示以磅为单位的标记大小。

如果 'PlotStyle''traditional',则 OutlierSize 的默认值为 6。如果 'PlotStyle''compact',则 OutlierSize 的默认值为 4。

示例: 'OutlierSize',8

数据类型: single | double

绘图样式,指定为以逗号分隔的对组,其中包含 'PlotStyle' 和下列项之一。

名称
'traditional'使用传统箱子样式绘制箱子。
'compact'使用较小的箱子样式绘制箱子,该箱子样式适用于具有许多组的绘图。此样式会更改其他一些参数的默认值。

示例: 'PlotStyle','compact'

离群值的符号和颜色,指定为以逗号分隔的对组,其中包含 'Symbol' 和线条设定。有关可用的线条设定,请参阅 plot 中的 LineSpec 参数。

如果 'PlotStyle''traditional',则默认值为 'r+',它使用红色 '+' 符号绘制每个离群值。

如果 'PlotStyle''compact',则默认值为 'o',它使用与对应箱子颜色相同的 'o' 符号绘制每个离群值。

如果省略符号,则离群值不可见。如果省略颜色,则离群值将以与箱子相同的颜色出现。

示例: 'kx'

箱子宽度,指定为以逗号分隔的对组,其中包含 'Widths' 和数值标量或数值向量。如果箱子的数量不等于指定的宽度值的数量,则根据需要复制或截断值列表。

此名称-值对组参数不会更改箱子之间的间距。因此,如果您为 'Widths' 指定较大的值,这些箱子可能会重叠。

'Positions' 名称-值对组参数取默认值时,默认箱子宽度等于箱子间最小间距的一半,即 0.5。

示例: 'Widths',0.3

数据类型: single | double

组外观

全部折叠

决定箱子颜色是否变化的分组变量,指定为以逗号分隔的对组,其中包含 'ColorGroup' 和分组变量。分组变量是数值向量、字符数组、字符串数组、元胞数组或分类数组。当指定的分组变量值有变化时,箱子的颜色也会变化。默认值 [] 表示箱子颜色不会因组而变化。

数据类型: single | double | char | string | cell | categorical

图上因子的显示顺序,指定为以逗号分隔的对组,其中包含 'FactorDirection' 和下列项之一。

名称
'data'首个因子值显示在绘图原点旁边。
'list'因子在 x 轴上从左到右显示,在 y 轴上从上到下显示。
'auto'如果分组变量是数值,则 boxplot 使用 'data'。如果分组变量是字符数组、字符串数组、元胞数组或分类数组,则 boxplot 使用 'list'

绘制所有组因子,指定为以逗号分隔的对组,其中包含 'FullFactors''off''on'。如果指定 'off',则 boxplot 为每个唯一的分组变量行绘制一个箱子。如果指定 'on',则 boxplot 为分组变量值的每个可能组合绘制一个箱子,包括数据中未出现的组合。

示例: 'FullFactors','on'

不同分组因子之间的距离,指定为以逗号分隔的对组,其中包含 'FactorGap' 和正数值、正数值向量或 'auto'。如果指定向量,则向量长度必须小于或等于分组变量的数目。

'FactorGap' 表示一个分组变量的不同因子之间的间隙,以绘图宽度的百分比表示。例如,如果您指定 [3,1],则第一个分组变量具有不同值的组之间的间隙是绘图宽度的 3%;第一个分组变量的值相同而第二个分组变量具有不同值的组之间的间隙是绘图宽度的 1%。

如果您指定 'auto',则 boxplot 会自动选择间隙距离。值 [] 表示不同因子之间的间隙大小没有变化。

如果 'PlotStyle''traditional',则 FactorGap 的默认值为 []。如果 'PlotStyle''compact',则默认值为 'auto'

示例: 'FactorGap',[3,1]

数据类型: single | double | char | string

分组因子之间的分隔,指定为以逗号分隔的对组,其中包含 'FactorSeparator' 和正整数或正整数向量或 'auto'。如果指定向量,则向量的长度应小于或等于分组变量的数目。整数值必须在 [1,G] 范围内,其中 G 是分组变量的数目。

'FactorSeparator' 指定哪些因子的值应该由网格线分隔。例如,当第一个或第二个分组变量更改值时,[1,2] 会添加分隔线。

如果 'PlotStyle''traditional',则 FactorSeparator 的默认值为 []。如果 'PlotStyle''compact',则默认值为 'auto'

示例: 'FactorSeparator',[1,2]

数据类型: single | double | char | string

绘制组的顺序,指定为以逗号分隔的对组,其中包含 'GroupOrder' 和包含分组变量名称的字符串数组或元胞数组。如果有多个分组变量,请用逗号分隔值。您也可以使用分类数组作为分组变量来控制箱子的顺序。默认值 [] 不会对这些箱子重新排序。

数据类型: string | cell

数据范围和最大距离

全部折叠

极值数据范围,指定为以逗号分隔的对组,分别包含 'DataLim' 和包含下限和上限的二元素数值向量。'ExtremeMode' 使用为 'DataLim' 指定的值来确定哪些数据点为极值。

数据类型: single | double

极值数据的处理方法,指定为以逗号分隔的对组,其中包含 'ExtremeMode' 和下列项之一。

名称
'clip'如果有任何数据值超出 'DataLim' 指定的范围,则 boxplot 会在图中的 DataLim 处显示这些值。
'compress'如果有任何数据值超出 'DataLim' 指定的范围,则 boxplot 会在 DataLim 以外的紧邻区域均匀显示这些值,并保留点的相对顺序。

如果有任何数据点超出 'DataLim' 指定的范围,则范围用虚线标记。如果有任何数据点被压缩,则会使用两条灰线标记压缩区域。–InfInf 处的值可以被裁剪或压缩,但 NaN 值不会出现在绘图上。箱子缺口基于样本规模绘制,如果中位数在指定范围内,箱子缺口可能会延伸出界外。如果中位数超出指定范围,则不会绘制箱子缺口。

示例: 'ExtremeMode','compress'

最大离群值位移距离,指定为由 'Jitter' 和数值组成的以逗号分隔的对组。Jitter 沿因子轴将重复离群值移动随机均匀量的最大距离,以使它们清楚可见。如果您指定 'Jitter' 等于 1,则抖动区域为最近相邻组之间的整个区域。

如果 'PlotStyle''traditional',则 Jitter 的默认值为 0。如果 'PlotStyle''compact',则默认值为 0.5。

示例: 'Jitter',1

数据类型: single | double

最大须线长度,指定为以逗号分隔的对组,其中包含 'Whisker' 和正数值。

boxplot 将大于 q3 + w × (q3 – q1) 或小于 q1 – w × (q3 – q1) 的点绘制为离群值,其中 w 是最大须线长度,而 q1 和 q3 分别是样本数据的第 25 个和第 75 个百分位数。

如果数据呈正态分布,'Whisker' 的默认值大约对应于 +/–2.7σ 和 99.3% 的覆盖率。绘制的须线会延伸到邻近值,该值是非离群值的最远端数据值。

'Whisker' 指定为 0,表示不带须线,q1 和 q3 之外的所有点都将视为离群值。

示例: 'Whisker',0

数据类型: single | double

绘图外观

全部折叠

箱子标签,指定为以逗号分隔的对组,其中包含 'Labels' 和包含箱子标签名称的字符数组、字符串数组、元胞数组或数值向量。为每个 x 值指定一个标签,或为每个组指定一个标签。要指定多个标签变量,请使用包含任何接受的数据类型的数值矩阵或元胞数组。

要从绘图中删除标签,请使用以下命令:set(gca,'XTickLabel',{' '})

数据类型: char | string | cell | single | double

标签方向,指定为以逗号分隔的对组,其中包含 'LabelOrientation' 和以下项之一。

名称
'inline'将箱子标签旋转至垂直状态。当 'PlotStyle''compact' 时,这是默认值。
'horizontal'保持箱子标签处于水平状态。当 'PlotStyle''traditional' 时,这是默认值。

如果标签位于 y 轴上,则两种设置都保持标签处于水平状态。

示例: 'LabelOrientation','inline'

要在绘图上显示的标签,指定为以逗号分隔的对组,其中包含 LabelVerbosity 和以下项之一。

名称
'all'为分组变量的每个值显示一个标签。当 'PlotStyle''traditional' 时,这是默认值。
'minor'

对于任何分组变量,仅当箱子 j 的对应值不同于其前一个箱子 (j – 1) 的对应值时,才显示其对应值。

'majorminor'

对于任何分组变量 g(:,i),仅当箱子 j 的对应值不同于箱子 (j – 1) 对应的 g(:,i) 值,或 g(:,1),…,g(:,i-1) 中至少有一个分组变量满足上述条件时,才显示 j 的对应值。当 'PlotStyle''compact' 时,这是默认值。

示例: 'LabelVerbosity','minor'

绘图方向,指定为以逗号分隔的对组,其中包含 Orientation 和以下项之一。

名称
'vertical'在 y 轴上绘制 x
'horizontal'在 x 轴上绘制 x

示例: 'horizontal'

箱子位置,指定为以逗号分隔的对组,其中包含 'Positions' 和一个数值向量,对于每个组或 x 值,该数值向量都包含一个对应的条目。默认值为 1:NumGroups,其中 NumGroups 是组数。

数据类型: single | double

提示

  • boxplot 创建数据的可视化表示,但不返回数值。要计算样本数据的相关汇总统计量,请使用以下函数:

    • min - 找到样本数据中的最小值。

    • max - 找到样本数据中的最大值。

    • median - 找到样本数据中的中位数值。

    • quantile - 找到样本数据中的分位数值。

    • grpstats - 计算样本数据的分组汇总统计量。

  • 您可以在图窗窗口中使用数据游标查看数据值和组名称。游标显示受 datalim 参数影响的任何点的原始值。您可以使用 gname 函数对离群值所属的组加标签。

  • 要修改箱线图组件的图形属性,请使用 findobjTag 属性来查找组件的句柄。箱线图组件的 Tag 值取决于参数设置,如下表所示。

    参数设置标记值
    所有设置
    • 'Box'

    • 'Outliers'

    'PlotStyle''traditional'
    • 'Median'

    • 'Upper Whisker'

    • 'Lower Whisker'

    • 'Upper Adjacent Value'

    • 'Lower Adjacent Value'

    'PlotStyle''compact'
    • 'Whisker'

    • 'MedianOuter'

    • 'MedianInner'

    'Notch''marker'
    • 'NotchLo'

    • 'NotchHi'

替代功能

您还可以使用 boxchart 函数创建 BoxChart 对象。虽然 boxchart 并未涵盖 boxplot 的所有功能,但它有一些优势。与 boxplot 不同,boxchart 函数:

  • 支持沿组轴的分类标尺

  • 提供图例选项

  • 适合与 hold on 命令结合使用

  • 具有改进的外观设计,帮助您更轻松地查看缺口

要控制对象的外观和行为,请更改 BoxChart 属性

参考

[1] McGill, R., J. W. Tukey, and W. A. Larsen. “Variations of Boxplots.” The American Statistician. Vol. 32, No. 1, 1978, pp. 12–16.

[2] Velleman, P.F., and D.C. Hoaglin. Applications, Basics, and Computing of Exploratory Data Analysis. Pacific Grove, CA: Duxbury Press, 1981.

[3] Nelson, L. S. “Evaluating Overlapping Confidence Intervals.” Journal of Quality Technology. Vol. 21, 1989, pp. 140–141.

[4] Langford, E. “Quartiles in Elementary Statistics”, Journal of Statistics Education. Vol. 14, No. 3, 2006.

在 R2006a 之前推出