8.4 箱形图
8.4.1 绘制箱形图

四分位数(quartile)是指在统计学中把所有数值由小到大排列并分成四等份,处于三个分割点位置的数值。分位数是将总体的全部数据按大小顺序排列后,处于各等分位置的变量值。如果将全部数据分成相等的两部分,它就是中位数;如果分成四等分,就是四分位数;八等分就是八分位数等。第一个四分位数(Q1),又称“下四分位数”,等于该样本中所有数值由小到大排列后第25%的数字。
第二个四分位数(Q2),又称“中位数”,等于该样本中所有数值由小到大排列后第 50%的数字。
第三个四分位数(Q3),又称“上四分位数”,等于该样本中所有数值由小到大排列后第75%的数字。
第三个四分位数与第一个四分位数的差距又被称为四分位距(Inter Quartile Range,IQR),是上四分位值 Q3与下四分位值 Q1之间的差,即 IQR=Q3-Q1。IQR乘以因子 0.7413得到标准化四分位距(Norm IQR),它是稳健统计技术处理中用于表示数据分散程度的一个量,其值相当于正态分布中的标准偏差(SD)。箱形图重要功能是识别异常值,识别标准:异常值被定义为小于Q1-1.5IQR或大于Q3+1.5IQR的值。
2、绘制箱形图
基本箱形图绘制。
data1 %>% ggplot(aes(x = nitrogen, y = v1)) + geom_boxplot(aes(fill = nitrogen)) # 简单箱形图绘制。
箱形图参数调节
width指定箱体宽度,outlier系列参数调节离散点colour指定颜色,size指定大小,shape指定形状。
notch = TRUE用于添加槽口,槽口用于查看不同分布的中位数是否有差异,如果各箱形图的槽口互不重合,说明各中位数有差异。varwidth用于指定数据集宽度。
data1 %>% ggplot(aes(x = nitrogen, y = v1)) + geom_boxplot(width = 0.5, outlier.colour = "red", outlier.size = 3, outlier.shape = 5) # width调节箱体宽度,outlier系列参数colour指定颜色,size指定大小,shape指定形状。
data1 %>% ggplot(aes(x = nitrogen, y = v1)) + geom_boxplot(aes(fill = nitrogen), notch = TRUE, varwidth = TRUE) + geom_jitter(aes(colour = nitrogen)) # 可变宽度带凹槽箱形图绘制。这里我的分组数据长度一样,所以varwidth显示等宽。## Notch went outside hinges
## ℹ Do you want `notch = FALSE`?
## Notch went outside hinges
## ℹ Do you want `notch = FALSE`?
## Notch went outside hinges
## ℹ Do you want `notch = FALSE`?
## Notch went outside hinges## ℹ Do you want `notch = FALSE`?
data1 %>% ggplot(aes(x = nitrogen, y = v1)) + geom_boxplot(aes(fill = nitrogen)) + stat_summary(fun.y = "mean", geom = "point", shape = 23, size = 3, fill = "white") # 箱线图添加均值。## Warning: The `fun.y` argument of `stat_summary()` is deprecated as of ggplot2 3.3.0.## ℹ Please use the `fun` argument instead.
给箱形图添加显著性。
library(ggpubr)
library(ggplot2)data1$nitrogen <- as.factor(data1$nitrogen)ggplot(data1, aes(x = nitrogen, y = v1)) + geom_boxplot() + stat_compare_means(aes(label = ..p.signif..),
comparisons = list(c('N1','N2'),
c('N2','N3'),
c('N3','N4')),
method = "t.test", label = "p.format") # 箱形图添加显著性标识。## [1] TRUE
分组箱形图
data1 %>% ggplot(aes(x = nitrogen, y = v1)) + geom_boxplot(aes(fill = variety)) # 按品种多分组的箱形图。
data1 %>% ggplot(aes(x = nitrogen, y = v1)) + geom_boxplot(aes(fill = variety)) + stat_compare_means(aes(group = variety), method = "t.test",label = "p.signif") # 多分组箱形图绘制并添加显著性。
参考资料
ggplot2: 数据分析与图形艺术,西安交通大学出版社,2013.
R语言数据可视化之美:专业图表绘制指南,电子工业出版社,2019.
R数据科学,人民邮电出版社,2018.
R数据可视化手册,人民邮电出版社,2014.
- END -
本文使用 文章同步助手 同步