R:如何使用多个类别进行包装图

时间:2015-09-17 12:35:59

标签: r categories boxplot

我有一个像这样的data.frame:

date <- as.POSIXct(c("2015-08-14 08:04:50", "2015-08-14 08:06:50", "2015-08-14 08:015:50", "2015-08-15 08:17:50", "2015-08-15 08:23:50")
transport <- c("bus", "bus", "train", "train", "train")
no2 <- c(74, 78, 100, 90, 85)
df <- data.frame(date, transport, no2, stringsAsFactors = FALSE))

我想制作一个根据运输模式和不同日期的箱线图。所以基本上我希望它分为两类:白天和运输方式。据我所知,在boxplot函数中定义x和y,因此可以根据x绘制y。

有人知道如何使用两个类别吗?

关于箱线图的另一个类似问题: 我有这样的数据:

date <- as.POSIXct(c("2015-08-14 08:04:50", "2015-08-14 08:06:50", "2015-08-14 08:015:50", "2015-08-15 08:17:50", "2015-08-15 08:23:50"))
no2_site1 <- c(74, 78, 100, 90, 85)
no2_site2 <- c(84, 88, 110, 100, 95)
df <- data.frame(date, no2_site1, no2_site2, stringsAsFactors = FALSE)

我的目标是制作一个箱形图,它会显示两个站点的NO2浓度(每天2个盒子),不同日期。

1 个答案:

答案 0 :(得分:0)

由于您的日期包含时间,因此需要删除时间以便您有不同的日期。然后,编写一个R公式(y ~ x * x2 ...表示法),其中描述no2值取决于datetransport之间的相互作用。

df$date = strftime(df$date, "%Y-%m-%d")
df$date = factor(df$date)
boxplot(no2 ~ date * transport, data = df, col=(c("gold","darkgreen")))

以下是ggplot

的代码
library(ggplot2)
ggplot(df, aes(x=date, y=no2)) + geom_boxplot(aes(fill=date))+ facet_grid(~ transport, scales='free_x')