Olá. Como estão?
Tenho como output de uma shiny um objeto ggpolot2, que é junção ‘n’ plots, mas esse ‘n’ varia em função do dataset, ou seja, eu não consigo prever a priori qual var ser o numero total de plots a juntar.
Pensava para isso usar o pacote patchwork, mas aparentemente preciso ter ‘harcodeado’ os objetos dos plots a juntar. Hoje esses plots ficam em um objeto do tipo list, com número de niveis variados, mas o patchwork não funciona com essa lista. Veja exemplo abaixo.
Alguma sugestão de como poderia fazer? Usar o facet_...()
para de entrada gerar um unico plot não é uma opção no meu caso.
library(patchwork)
library(ggplot2)
p1 <- ggplot(mtcars) +
geom_point(aes(mpg, disp)) +
ggtitle('Plot 1')
p2 <- ggplot(mtcars) +
geom_boxplot(aes(gear, disp, group = gear)) +
ggtitle('Plot 2')
p3 <- ggplot(mtcars) +
geom_point(aes(hp, wt, colour = mpg)) +
ggtitle('Plot 3')
p4 <- ggplot(mtcars) +
geom_bar(aes(gear)) +
facet_wrap(~cyl) +
ggtitle('Plot 4')
p1 + p2 + p3 + p4 + plot_layout(ncol = 2) # funciona
p_list = list(p1, p2, p3, p4)
p_list + plot_layout(ncol = 2) #nao funciona
#> Error in p_list + plot_layout(ncol = 2): non-numeric argument to binary operator
Created on 2023-09-08 with reprex v2.0.2