用箱线图可视化汇总统计量
1.boxplot(x)
创建 x
中数据的箱线图。如果 x
是向量,boxplot
绘制一个箱子。如果 x
是矩阵,boxplot
为 x
的每列绘制一个箱子。
在每个箱子上,中心标记表示中位数,箱子的底边和顶边分别表示第 25 个和 75 个百分位数。须线会延伸到不是离群值的最远端数据点,离群值会以 '+'
符号单独绘制。
2.boxplot(x,g)
使用 g
中包含的一个或多个分组变量创建箱线图。
boxplot
为具有相同的一个或多个 g
值的各组 x
值创建一个单独的箱子。
3.boxplot(ax,___)
使用坐标区图形对象 ax
指定的坐标区和任何上述语法创建箱线图。
4.boxplot(___,Name,Value)
使用由一个或多个 Name,Value
对组参数指定的附加选项创建箱线图。例如,您可以指定箱子样式或顺序。
创建一个表示每加仑英里数 (MPG
) 测量值的箱线图。添加标题并为坐标区加标签。
load carsmall % 加载样本数据
boxplot(MPG)
xlabel('All Vehicles')
ylabel('Miles per Gallon (MPG)')
title('Miles per Gallon for All Vehicles')
箱线图显示,样本数据中所有车辆的每加仑英里数的中位数约为 24 英里。最小值约为 9,最大值约为 44。
根据样本数据创建每加仑英里数 (MPG
) 测量值的箱线图,按车辆的原产国 (Origin
) 分组。添加标题并为坐标区加标签。
load carsmall % 加载样本数据
boxplot(MPG,Origin)
title('Miles per Gallon by Vehicle Origin')
xlabel('Country of Origin')
ylabel('Miles per Gallon (MPG)')
每个箱子直观地表示来自指定国家/地区的汽车的 MPG 数据。意大利的“箱子”显示为一条线,因为样本数据只包含该组的一个观测值。
生成两组样本数据。第一个样本 x1
包含从 mu = 5
和 sigma = 1
的正态分布生成的随机数。
第二个样本 x2
包含从 mu = 6
和 sigma = 1
的正态分布生成的随机数。
创建 x1
和 x2
的带缺口的箱线图。用对应的 mu
值对每个箱子加标签。
rng default % For reproducibility
x1 = normrnd(5,1,100,1);
x2 = normrnd(6,1,100,1);
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 随机数矩阵,用作样本数据。
在同一图上为 x
中的数据创建两个箱线图。顶部图使用默认格式,底部图使用紧凑格式。
rng default % For reproducibility
x = randn(100,25);
figure
subplot(2,1,1)
boxplot(x)
subplot(2,1,2)
boxplot(x,'PlotStyle','compact')
每个图显示相同的数据,但紧凑格式可以提高具有多个箱子的图的可读性。
通过使用分组变量为不同长度的数据向量创建箱线图。
随机生成三个不同长度的列向量:长度分别为 5
、10
和 15
。将数据合并为一个长度为 30
的列向量。
创建一个分组变量,将同一值赋给 x
中来自于同一向量的行。例如,g
的前五行具有相同的值 First
,因为 x
的前五行都来自同一个向量 x1
。
rng('default') % For reproducibility
x1 = rand(5,1);
x2 = rand(10,1);
x3 = rand(15,1);
x = [x1; x2; x3];
g1 = repmat({'First'},5,1);
g2 = repmat({'Second'},10,1);
g3 = repmat({'Third'},15,1);
g = [g1; g2; g3];
boxplot(x,g)