Как сохранить вывод из ggforce::facet_grid_paginate только в одном файле PDF?
Я использую пакет ggforce для создания многогранных графиков на нескольких страницах:
library(ggforce)
for(i in 1:6){
ggplot(diamonds) +
geom_point(aes(carat, price), alpha = 0.1) +
facet_wrap_paginate(~cut:clarity, ncol = 2, nrow = 2, page = i)
ggsave(paste0("~/diamonds_", i, ".pdf"))
}
который генерирует ожидаемые 6 файлов PDF:
Какой самый простой способ получить вывод в одном PDF-файле с 6 страницами?
Я понимаю, что это можно сделать с reports
а также pdftools
пакеты, но мне интересно, есть ли более прямой способ сделать это. Я ожидаю, что ggforce предоставит функциональность для вывода на одной странице, но похоже, что это не так?
1 ответ
Вам даже не нужно использовать ggsave
Вы можете поместить все эти участки в один pdf
от:
pdf("~/diamonds_all.pdf")
for(i in 1:6){
print(ggplot(diamonds) +
geom_point(aes(carat, price), alpha = 0.1) +
facet_wrap_paginate(~cut:clarity, ncol = 2, nrow = 2, page = i))
}
dev.off()
У меня аналогичный вопрос, и вот мое решение, в основном расширение ответа Майка Х.
Обычно вы хотите распечатать все страницы и заранее не знаете, сколько страниц у вас есть. Кроме того, вы можете распечатать на бумаге стандартного размера A4. Так:
library(ggforce)
gg <- ggplot(diamonds) +
geom_point(aes(carat, price)) +
facet_wrap_paginate(~cut:clarity, ncol = 2, nrow = 2, page = 1)
n <- n_pages(gg)
pdf('diamonds.pdf', paper= 'A4', w= 210/25.4, 297/25.4)
for(i in 1:n){
print(gg + facet_wrap_paginate(~cut:clarity, ncol = 2, nrow = 2, page = i))
}
dev.off()
Код должен быть понятным. Уродство в том, что тебе приходится повторятьfacet_wrap_paginate(...)
дважды или превратите его в специальную функцию. Я хотел бы услышать лучшее решение...