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
This is another option using rowwise
:
plots2 = iris %>%
group_by(Species) %>%
do(plots = p %+% .) %>%
rowwise() %>%
do(x=.$plots + ggtitle(.$Species))
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).
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)))