library(ggplot2)
df <- data.frame(x=1:10, y=rnorm(10))
p1 <- ggplot(df, aes(x,y)) + geom_point()
plist <- list(p1,p1,p1,p1,p1)
# In my real example,a plot function will fit a ggplot to a list of datasets
#and return a list of ggplots like the example above.
Eu gostaria de organizar as parcelas usando grid.arrange()
em gridExtra
.
Como eu faria isso se o número de parcelas plist
fosse variável?
Isso funciona:
grid.arrange(plist[[1]],plist[[2]],plist[[3]],plist[[4]],plist[[5]])
mas preciso de uma solução mais geral. pensamentos?
grid.arrange(plist[[1:length(plist)]], ncol = nCol))
Recebo um erro como este:Error in hl.plots[[1:12]] : no such index at level 3
Obrigado!x <- list(1,2); x[[3:1]]
. De forma mais ampla, use algo como emplist[...]
vez deplist[[...]]
fazer seus subconjuntos. E então usedo.call()
, que temos que usar porquegrid.arrange()
não está configurado para receber uma lista como seu primeiro argumento. Saudações e boa sorte!Você pode usar
grid.arrange()
earrangeGrob()
com listas, desde que especifique a lista usando ogrobs =
argumento em cada função. Por exemplo, no exemplo que você deu:fonte
Para ser mais completo (e como esta velha questão já respondida foi reavivada, recentemente ), gostaria de adicionar uma solução usando o
cowplot
pacote:fonte
Error in ggplot_to_gtable(x) : Argument needs to be of class "ggplot" or "gtable"
ggplot2
pacote ou gráficos básicos?ggplot2
.grid.arrange
quase funcionou para mim - mas, acontece que minha lista de parcelas não está sendo preenchida. Publiquei o problema como uma pergunta: stackoverflow.com/questions/43216262/… . Então, eu estou me perguntando se esse poderia ter sido o problema para o cowplot tambémEu sei que a questão afirma especificamente usando o pacote gridExtra , mas a
wrap_plots
função do pacote patchwork é uma ótima maneira de lidar com listas de comprimento variável:Uma coisa útil sobre isso é que você não precisa especificar quantas colunas são necessárias e terá como objetivo manter o número de colunas e linhas iguais. Por exemplo:
fonte
devtools::install_github("thomasp85/patchwork")
?Para ajustar todos os gráficos em uma página, você pode calcular o número de colunas e linhas como este:
Como a maioria das funções de plotagem múltiplas tem ncol e nrow como argumentos, você pode simplesmente colocá-los lá. Eu gosto do ggarrange do ggpubr.
Isso favorece mais linhas do que colunas, portanto, inverta se quiser o oposto. Ou seja, para 6 plotagens, obterá 3 linhas e 2 colunas e não o contrário.
fonte