设置ggplot标题以反映dplyr分组

时间:2017-12-05 20:08:45

标签: r ggplot2 dplyr

我在dplyr中生成了一个分组数据框,其中每个组反映了因子变量级别的唯一组合。我想使用与this帖子类似的代码来绘制不同的群组。但是,我无法弄清楚如何在我的情节标题中包含两个(或更多)变量,这是一个麻烦,因为我有一堆不同的组合。

虚假数据和绘图代码:

library(dplyr)
library(ggplot2)

spiris<-iris
spiris$site<-as.factor(rep(c("A","B","C")))
spiris$year<-as.factor(rep(2012:2016))  
spiris$treatment<-as.factor(rep(1:2))

g<-spiris %>% 
  group_by(site, Species) %>% 
  do(plots=ggplot(data=.) +
       aes(x=Petal.Width)+geom_histogram()+
       facet_grid(treatment~year))
       ##Need code for title here
g[[3]] ##view plots

我需要每个情节的标题来反映&#34;网站&#34;和&#34;物种&#34;。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

使用split() %>% purrr::map2()代替group_by() %>% do(),如下所示:

spiris %>% 
    split(list(.$site, .$Species)) %>%
    purrr::map2(.y = names(.),
         ~ ggplot(data=., aes(x=Petal.Width)) +
           geom_histogram()+
           facet_grid(treatment~year) +
           labs(title = .y) )

enter image description here

答案 1 :(得分:1)

您只需要使用ggtitle()设置标题:

g <- spiris %>% group_by(site, Species) %>% do(plots = ggplot(data = .) + 
    aes(x = Petal.Width) + geom_histogram() + facet_grid(treatment ~ 
    year) + ggtitle(paste(.$Species,.$site,sep=" - ")))

enter image description here