如何在ggplot2

时间:2017-07-17 21:15:33

标签: ggplot2 boxplot

我有这个样本数据。

sample <- data.frame(sample = 1:12, 
                     site = c('A','A','A','B','B','B','A','A','A','B','B','B'), 
                     month = c(rep('Feb', 6), rep('Aug', 6)), 
                     Ar = c(7,8,9,8,9,9,4,5,7,5,8,9))

并创建了两个箱图

ggplot(sample, aes(x=factor(month), y=Ar)) +
   geom_boxplot(aes(fill=site))

ggplot(sample, aes(x=factor(month), y=Ar)) +
   geom_boxplot()

我想知道是否有办法将它们组合在同一个图表中,以便每个月的总数,站点A和站点B彼此相邻。

1 个答案:

答案 0 :(得分:0)

您可以使用dplyr(通过tidyverse包)和reshape2

library(dplyr)
library(reshape2)

sample%>% 
  dplyr::select(-sample) %>% 
  mutate(global = 'Global') %>% 
  melt(., id.vars=c("month", "Ar")) %>% 
  ggplot(aes(month, Ar)) + geom_boxplot(aes(month, Ar, fill=value))

这会删除当前未使用它的示例列,在单独的列中添加术语global,通过melt函数重新整形数据并生成图形。请注意,我在原始问题中更改了输入代码格式。通过对data.frame的更改,您不再需要将变量强制转换为因子。