У меня есть список объектов, созданных с помощью patchwork
. Я хотел бы сохранить каждый элемент этого списка как отдельную страницу в одном PDF-файле.
Если делать это для обычных объектов ggplot2
, я бы объединил графики, используя gridExtra::marrangeGrob()
, в соответствии с решением, приведенным здесь. Мне нравится этот подход, потому что он аккуратный, а вывод включает номера страниц.
Однако я не могу заставить этот подход работать с patchwork
. Вместо того, чтобы печатать весь «составной» сюжет на каждой странице, он показывает только один из элементов сюжета. MWE приведен ниже.
library(ggplot2)
library(patchwork)
library(gridExtra)
# dummy plots
p1 <- ggplot(mtcars, aes(mpg, disp)) + geom_point()
p2 <- ggplot(mtcars, aes(mpg, disp)) + geom_line()
# create plot 'composites' using `patchwork` and combine into list
# elements duplicated for simplicity
plot_list <- list(
wrap_plots(p1, p2),
wrap_plots(p1, p2)
)
# attempt to export with separate page for each list element
# expect to produce a PDF with two pages, both of which show p1 adjacent to p2
plot_list %>%
marrangeGrob(nrow = 1, ncol = 1) %>% # no combination of nrow and ncol seems to work
ggsave(filename = "plots.pdf")
Что я здесь делаю неправильно? Объединение patchwork
с gridExtra
— глупая идея? Если да, то какая альтернатива лучше?
cowplot::plot_grid
вместоwrap_plots
, но я не уверен, что это достаточно гибко для вас. - person slamballais   schedule 13.05.2021pdf("myplots.pdf") for (i in 1:2){ plot(plots_for_page[i]) } dev.off()
- person Josh   schedule 13.05.2021