从 R 中同一图表上的数据集创建多个箱线图

Posted

技术标签:

【中文标题】从 R 中同一图表上的数据集创建多个箱线图【英文标题】:Create multiple boxplots from a data set on the same graph in R 【发布时间】:2021-04-23 17:49:33 【问题描述】:

下表是我想用来制作三个箱线图的数据集的一小部分:

##         No year month day hour PM2.5  PM10   SO2   NO2   CO    O3  TEMP   PRES
## 1     7345 2014     1   1    0  20.0  90.0  18.0  62.0   NA    NA  -1.5 1007.3
## 2     7346 2014     1   1    1  43.0 348.0  25.0  91.0 1100   1.0  -2.6 1006.9
## 3     7347 2014     1   1    2  79.0 423.0  41.0 103.0 1800   1.0  -3.0 1006.9
## 4     7348 2014     1   1    3  82.0 337.0  43.0 101.0 2100   1.0  -3.3 1006.4
## 5     7349 2014     1   1    4 124.0 594.0  59.0 130.0 2400   1.0  -2.7 1006.1
## 6     7350 2014     1   1    5  89.0 307.0  47.0 102.0 2500   1.0  -3.1 1006.6
## 7     7351 2014     1   1    6  59.0 161.0  45.0  91.0 1900   1.0  -2.6 1007.2
## 8     7352 2014     1   1    7  31.0  93.0  24.0  69.0  900   4.0  -2.9 1007.9
## 9     7353 2014     1   1    8  21.0  90.0  18.0  52.0  700  17.0   0.0 1008.8
## 10    7354 2014     1   1    9  38.0 142.0  25.0  87.0 1200   1.0   9.0 1009.6

我想制作变量 PM2.5 的三个箱线图,其中所有条件都具有条件​​小时 == 12,但 2014、2015 和 2016 年各有一个。它们还需要在同一个图表上。这是我尝试过的:

plots <- data.frame(box14 = subset(dat, hour == 12 & year == 2014)$PM2.5,
                    box15 = subset(dat, hour == 12 & year == 2015)$PM2.5,
                    box16 = subset(dat, hour == 12 & year == 2016)$PM2.5)
boxplot(plots)

我只是得到'data.frame 中的错误......参数暗示不同的行数'。我应该改变什么来获得我想要的箱线图?

【问题讨论】:

【参考方案1】:

这是一个使用dplyrggplot2 的快速解决方案:

library(dplyr)
library(ggplot2)

dat %>% 
  as_tibble() %>% 
  filter(hour == 12) %>% 
  filter(year %in% c(2014, 2015, 2016)) %>% 
  ggplot(aes(x=as.factor(year), y=PM2.5)) + 
  geom_boxplot()

【讨论】:

【参考方案2】:

在基础 r 中:

filtered_data <- original_data[original_data$hour == 12 & original_data$year %in% c(2014,2015,2016),]

然后

boxplot(PM2.5~year,data=filtered_data)

【讨论】:

以上是关于从 R 中同一图表上的数据集创建多个箱线图的主要内容,如果未能解决你的问题,请参考以下文章

使用 R 中 ggplot2 的 facet_wrap 功能对多个数据集进行箱线图比较?

R中多个变量的箱线图/直方图

如何使用文本文件中的数据集在Java中绘制折线图?

在 r 上创建一个箱线图并希望合并

分组箱线图,然后在 r 中列

s-s-rS 2008 使用来自同一数据集的不同总和在条形图顶部绘制折线图