R 中的 boxplot():如何制作 BoxRStudio 中的绘图 [示例]
R 中的 boxplot()
R 中的 boxplot() 有助于按四分位数可视化数据分布并检测异常值的存在。您可以使用 ggplot2 库中的几何对象 geom_boxplot() 在 R 中绘制 boxplot()。
我们将使用 airquality 数据集在 R 中使用 ggplot 引入 boxplot()。该数据集测量了 1973 年 154 月至 XNUMX 月纽约的空气质量。该数据集包含 XNUMX 个观测值。我们将使用以下变量:
- 臭氧:数值变量
- 风:数值变量
- 月份:5月至9月。数值变量
创建 Box 情节
在 R 中开始创建第一个 boxplot() 之前,您需要按如下方式处理数据:
- 步骤 1:导入数据
- 第 2 步:删除不必要的变量
- 步骤 3:按因子级别转换月份
- 步骤4:创建一个新的分类变量,将月份分为三个级别:开始、中间和结束。
- 步骤 5:删除缺失的观测值
所有这些步骤都是通过 dplyr 和管道运算符 %>% 完成的。
library(dplyr) library(ggplot2) # Step 1 data_air <- airquality % > % #Step 2 select(-c(Solar.R, Temp)) % > % #Step 3 mutate(Month = factor(Month, order = TRUE, labels = c("May", "June", "July", "August", "September")), #Step 4 day_cat = factor(ifelse(Day < 10, "Begin", ifelse(Day < 20, "Middle", "End"))))
一个好的做法是使用函数 glimpse() 检查数据的结构。
glimpse(data_air)
输出:
## Observations: 153 ## Variables: 5 ## $ Ozone <int> 41, 36, 12, 18, NA, 28, 23, 19, 8, NA, 7, 16, 11, 14, ... ## $ Wind <dbl> 7.4, 8.0, 12.6, 11.5, 14.3, 14.9, 8.6, 13.8, 20.1, 8.6... ## $ Month <ord> May, May, May, May, May, May, May, May, May, May, May,... ## $ Day <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,... ## $ day_cat <fctr> Begin, Begin, Begin, Begin, Begin, Begin, Begin, Begi...
数据集中有 NA。删除它们是明智的做法。
# Step 5 data_air_nona <-data_air %>% na.omit()
基本箱线图
让我们绘制基本 R boxplot() 来表示按月分布的臭氧分布。
# Store the graph box_plot <- ggplot(data_air_nona, aes(x = Month, y = Ozone)) # Add the geometric object box plot box_plot + geom_boxplot()
代码说明
- 存储图表以供进一步使用
- box_plot:将图形存储到变量 box_plot 中,这有助于进一步使用或避免代码行过于复杂
- 添加 R boxplot() 的几何对象
- 您将数据集 data_air_nona 传递给 ggplot boxplot。
- 在 aes() 参数中,添加 x 轴和 y 轴。
- + 号表示您希望 R 继续阅读代码。通过拆分代码,可以提高代码的可读性。
- 使用 geom_boxplot() 创建箱线图
输出:
改变图表的一侧
您可以翻转图表的一侧。
box_plot + geom_boxplot()+ coord_flip()
代码说明
- box_plot:使用您存储的图表。这样可以避免每次向图表添加新信息时重写所有代码。
- geom_boxplot():在 R 中创建 boxplots()
- coord_flip():翻转图形的一侧
输出:
更改异常值的颜色
您可以更改异常值的颜色、形状和大小。
box_plot + geom_boxplot(outlier.colour = "red", outlier.shape = 2, outlier.size = 3) + theme_classic()
代码说明
- outlier.colour=”red”: 控制异常值的颜色
- outlier.shape=2:改变异常值的形状。2 表示三角形
- outlier.size=3:改变三角形的大小。大小与数字成正比。
输出:
添加汇总统计数据
您可以向 R boxplot() 添加汇总统计数据。
box_plot + geom_boxplot() + stat_summary(fun.y = mean, geom = "point", size = 3, color = "steelblue") + theme_classic()
代码说明
- stat_summary() 允许向水平箱线图 R 添加摘要
- 参数 fun.y 控制返回的统计数据。您将使用 mean
- 注意:还有其他统计数据,例如最小值和最大值。同一张图表中可以显示多个统计数据
- geom = “point”:用点绘制平均值
- size=3:点的大小
- color =”steelblue”: 点的颜色
输出:
Box 用点绘制
在下一个水平箱线图 R 中,添加点图层。每个点代表一个观察值。
box_plot + geom_boxplot() + geom_dotplot(binaxis = 'y', dotsize = 1, stackdir = 'center') + theme_classic()
代码说明
- geom_dotplot() 允许在箱宽中添加点
- binaxis='y':更改 y 轴上点的位置。默认情况下,x 轴
- dotsize=1:点的大小
- stackdir='center': 堆叠点的方式:四个值:
- “向上”(默认),
- “下”
- “中央”
- “中心整体”
输出:
控制美学 Box 情节
更改框的颜色
您可以更改组的颜色。
ggplot(data_air_nona, aes(x = Month, y = Ozone, color = Month)) + geom_boxplot() + theme_classic()
代码说明
- 组的颜色在 aes() 映射中控制。您可以使用 color=Month 根据月份更改箱线图的颜色
输出:
Box 包含多个组的绘图
也可以添加多个组。您可以根据测量日期直观地了解空气质量的差异。
ggplot(data_air_nona, aes(Month, Ozone)) + geom_boxplot(aes(fill = day_cat)) + theme_classic()
代码说明
- 几何对象的 aes() 映射控制要显示的组(此变量必须是一个因子)
- aes(fill= day_cat) 允许在 x 轴上为每个月创建三个框
输出:
Box 抖动点绘图
另一种显示点的方式是使用抖动点。对于 R 变量中的分类数据,使用箱线图来可视化点是一种方便的方法。
该方法避免了离散数据的重叠。
box_plot + geom_boxplot() + geom_jitter(shape = 15, color = "steelblue", position = position_jitter(width = 0.21)) + theme_classic()
代码说明
- geom_jitter() 为每个点添加了一点衰减。
- shape=15 改变点的形状。15 代表正方形
- color = “steelblue”:改变点的颜色
- position=position_jitter(width = 0.21):放置重叠点的方式。position_jitter(width = 0.21) 表示将点从 x 轴移动 20%。默认情况下为 40%。
输出:
您可以看到第一张采用抖动法绘制的图表与第二张采用点法绘制的图表之间的区别。
box_plot + geom_boxplot() + geom_point(shape = 5, color = "steelblue") + theme_classic()
缺口 Box 情节
geom_boxplot() 的一个有趣特性是 R 中的带缺口箱线图函数。带缺口图会将箱线缩小到中位数附近。带缺口箱线图的主要目的是比较各组之间中位数的显著性。有充分证据表明,当缺口不重叠时,两组的中位数不同。缺口计算如下:
是四分位数和观测值个数。
box_plot + geom_boxplot(notch = TRUE) + theme_classic()
代码说明
- geom_boxplot(notch=TRUE): 创建带缺口的水平箱线图 R
输出:
结语
我们可以在下表中总结不同类型的水平箱线图 R:
目的 | 代码 |
---|---|
基本箱线图 |
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() |
翻转 |
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + coord_flip() |
缺口箱线图 |
ggplot(df, aes( x = x1, y =y)) + geom_boxplot(notch=TRUE) |
Box 带有抖动点的绘图 |
ggplot(df, aes( x = x1, y =y)) + geom_boxplot() + geom_jitter(position = position_jitter(0.21)) |
还检查: - R 初学者教程:学习 R 编程语言