Main Content

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

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

Figure contains an axes object. The axes object with title Miles per Gallon for All Vehicles, xlabel All Vehicles, ylabel Miles per Gallon (MPG) contains 7 objects of type line. One or more of the lines displays its values using only markers

箱线图显示,样本数据中所有车辆的每加仑英里数的中位数约为 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)')

Figure contains an axes object. The axes object with title Miles per Gallon by Vehicle Origin, xlabel Country of Origin, ylabel Miles per Gallon (MPG) contains 42 objects of type line. One or more of the lines displays its values using only markers

每个箱子直观地表示来自指定国家/地区的汽车的 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')

Figure contains an axes object. The axes object with title Compare Random Data from Different Distributions contains 14 objects of type line. One or more of the lines displays its values using only markers

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

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

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

Figure contains an axes object. The axes object with title Compare Random Data from Different Distributions contains 14 objects of type line. One or more of the lines displays its values using only markers

须线越短,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')

Figure contains 2 axes objects. Axes object 1 contains 175 objects of type line. Axes object 2 contains 150 objects of type line, text.

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

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

随机生成三个不同长度的列向量:长度分别为 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)

Figure contains an axes object. The axes object contains 21 objects of type line. One or more of the lines displays its values using only markers

输入参数

全部折叠

输入数据,指定为数值向量或数值矩阵。如果 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 属性

名称-值参数

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

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

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

箱子外观

全部折叠

箱子样式,指定为下列各项之一。

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

示例: 'BoxStyle','filled'

箱子颜色,指定为 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'

中位数样式,指定为下列各项之一。

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

示例: 'MedianStyle','target'

比较区间的标记,指定为下列各项之一。

名称
'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'

离群值的标记大小,指定为一个正数值。指定的值表示以磅为单位的标记大小。

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

示例: 'OutlierSize',8

数据类型: single | double

绘图样式,指定为下列各项之一。

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

示例: 'PlotStyle','compact'

离群值的标记和颜色,指定为包含标记和颜色的符号的字符向量或字符串标量。符号可以按任意顺序显示。如果省略标记符号,则离群值不可见。如果省略颜色符号,则离群值将以与箱子相同的颜色出现。

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

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

标记描述生成的标记
"o"圆形

Sample of circle marker

"+"加号

Sample of plus sign marker

"*"星号

Sample of asterisk marker

"."

Sample of point marker

"x"叉号

Sample of cross marker

"_"水平线

Sample of horizontal line marker

"|"垂直线

Sample of vertical line marker

"square"正方形

Sample of square marker

"diamond"菱形

Sample of diamond marker

"^"上三角

Sample of upward-pointing triangle marker

"v"下三角

Sample of downward-pointing triangle marker

">"右三角

Sample of right-pointing triangle marker

"<"左三角

Sample of left-pointing triangle marker

"pentagram"五角形

Sample of pentagram marker

"hexagram"六角形

Sample of hexagram marker

颜色描述

'y'

黄色

'm'

品红

'c'

青色

'r'

红色

'g'

绿色

'b'

蓝色

'w'

白色

'k'

黑色

示例: 指定 'Symbol','' 可使离群值不可见。

箱子宽度,指定为数值标量或数值向量。如果箱子的数量不等于指定的宽度值的数量,则根据需要复制或截断值列表。

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

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

示例: 'Widths',0.3

数据类型: single | double

组外观

全部折叠

决定箱子颜色是否变化的分组变量,指定为分组变量。分组变量是数值向量、字符数组、字符串数组、元胞数组或分类数组。当指定的分组变量值有变化时,箱子的颜色也会变化。默认值 [] 表示箱子颜色不会因组而变化。

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

图上因子的显示顺序,指定为下列各项之一。

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

示例: 'FactorDirection','auto'

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

示例: 'FullFactors','on'

不同分组因子之间的距离,指定为正数值、正数值向量或 'auto'。如果指定向量,则向量长度必须小于或等于分组变量的数目。

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

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

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

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

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

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

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

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

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

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

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

数据类型: string | cell

数据范围和最大距离

全部折叠

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

数据类型: single | double

极值数据的处理方法,指定为下列各项之一。

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

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

示例: 'ExtremeMode','compress'

最大离群值位移距离,指定为数值。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 是乘数 Whisker,而 q1 和 q3 分别是样本数据的第 25 个和第 75 个百分位数。

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

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

有关经过标注的带须线的箱线图示例,请参阅箱线图

示例: 'Whisker',0

数据类型: single | double

绘图外观

全部折叠

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

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

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

标签方向,指定为下列各项之一。

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

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

示例: 'LabelOrientation','inline'

要在绘图上显示的标签,指定为下列各项之一。

名称
'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'

绘图方向,指定为下列各项之一。

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

示例: 'Orientation','horizontal'

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

数据类型: single | double

详细信息

全部折叠

箱线图

箱线图提供样本数据的摘要统计量的可视化,并包含以下特性:

  • 每个箱子的底部和顶部分别表示样本的第 25 个和第 75 个百分位数。每个箱子的底部和顶部之间的距离表示四分位差。

  • 每个箱子中间的红线表示样本中位数。如果中位数不在箱子的中心,则绘图显示样本偏度。

  • 须线是自每个箱子的顶部向上延伸和底部向下延伸的线条。须线从四分位差的端点延伸到须线长度内最远的观测值(相邻值)。

  • 超出须线长度的观测值标记为离群值。默认情况下,离群值是距离箱子底部或顶部超过 1.5 倍四分位差的值。不过,您可以通过使用额外的输入参数来调整此值。离群值显示为红色 + 号。

  • 缺口显示样本间中位数的变异性。计算缺口的宽度,使得缺口不重叠的框在 5% 显著性水平上具有不同中位数。显著性水平基于正态分布假设,但对于其他分布,中位数比较也可合理地认为是稳健的。比较箱线图中位数就像目测假设检验,类似于用于均值的 t 检验。在某些情况下,缺口可能会延伸到箱子外部。

Example of a box plot with labels for the summary statistics

提示

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

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

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

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

    • quantile - 找到样本数据中的分位数值。例如,要计算 x 的第 25 个和第 75 个百分位数,请指定 quantile(x,[0.25 0.75])

    • iqr - 找到样本数据中的四分位差。

    • 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 之前推出