Problema
Queremos crear y guardar gráficos separadamente con ggplot2. Es decir, en lugar de mostrar los gráficos en un mismo panel con facet_wrap o facet_grid, queremos crear gráficos independientes, cada uno en un panel y almacenarlos en una lista.
library(tidyverse)
p <- ggplot(iris, aes(Sepal.Length, Sepal.Width)) + geom_point()
p + facet_wrap(vars(Species), scales = "free")
Solución
Creamos una lista vacía donde almacenaremos los gráficos. Iniciamos un bucle generando uno gráfico con ggplot2 para cada elemento único de la lista de especies. Dejamos la función facet_wrap, aunque cada gráfico está en un único panel, para obtener el título de cada especie.
# Bucle
plots <- list() # Creamos una lista vacía
p_list <- unique(iris$Species)
for (i in seq_along(p_list)) {
# Gráfico por especie
p <- iris %>% filter(Species == p_list[i]) %>%
ggplot(aes(Sepal.Length, Sepal.Width)) +
geom_point() +
facet_wrap( ~ Species) # Títulos
plots[[i]] = p
print(p)
}
Para volver a imprimir la lista completa de gráficos o uno específico.
# Imprime lista completa
print(plots)
# Imprime uno específico
print(plots[[1]])
Entradas relacionadas
Referencias
No hay comentarios:
Publicar un comentario