Apply a ggplot-function per group with dplyr and set title per group

后端 未结 3 2028
孤独总比滥情好
孤独总比滥情好 2020-12-01 06:25

I would like to create one separate plot per group in a data frame and include the group in the title.

With the iris dataset I can in base R and ggplot do this

相关标签:
3条回答
  • 2020-12-01 07:01

    This is another option using rowwise:

    plots2 = iris %>% 
        group_by(Species) %>% 
        do(plots = p %+% .) %>% 
        rowwise() %>%
        do(x=.$plots + ggtitle(.$Species))
    
    0 讨论(0)
  • 2020-12-01 07:09

    From dplyr 0.8.0 we can use group_map :

    library(dplyr, warn.conflicts = FALSE, quietly = TRUE)
    #> Warning: le package 'dplyr' a été compilé avec la version R 3.5.2
    library(ggplot2)
    plots3 <- iris %>%
      group_by(Species) %>%
      group_map(~tibble(plots=list(
        ggplot(.) + aes(x=Petal.Width, y=Petal.Length) + geom_point() + ggtitle(.y[[1]]))))
    
    plots3
    #> # A tibble: 3 x 2
    #> # Groups:   Species [3]
    #>   Species    plots   
    #>   <fct>      <list>  
    #> 1 setosa     <S3: gg>
    #> 2 versicolor <S3: gg>
    #> 3 virginica  <S3: gg>
    plots3$plots[[2]]
    

    Created on 2019-02-18 by the reprex package (v0.2.0).

    0 讨论(0)
  • 2020-12-01 07:10

    Use .$Species to pull the species data into ggtitle:

    iris %>% group_by(Species) %>% do(plots=ggplot(data=.) +
             aes(x=Petal.Width, y=Petal.Length) + geom_point() + ggtitle(unique(.$Species)))
    
    0 讨论(0)
提交回复
热议问题