R: Использование marrangeGrob для вывода результатов в формате pdf на пустую первую страницу

Я делаю несколько PDF-файлов с несколькими графиками на каждой странице, и, когда я использую marrangeGrob из пакета gridextra для создания этих графиков, первая страница всегда пуста. Как сделать так, чтобы сюжеты начинались на первой странице? Вот пример кода:

library(gridextra)
library(ggplot2)
data(iris)

Plotlist <- list()

Plotlist[[1]] <- ggplot(data = subset(iris, Species == "setosa"),
                         aes(x = Sepal.Width, y = Sepal.Length)) +
      geom_point()

Plotlist[[2]] <- ggplot(data = subset(iris, Species == "versicolor"),
                        aes(x = Sepal.Width, y = Sepal.Length)) +
      geom_point()

Plotlist[[3]] <- ggplot(data = subset(iris, Species == "virginica"),
                        aes(x = Sepal.Width, y = Sepal.Length)) +
      geom_point()

pdf("iris.pdf", width = 8.5, height = 11)
marrangeGrob(Plotlist, nrow = 2, ncol = 1)
dev.off()

На 2-й странице pdf вверху даже написано "Страница 1 из 2", так что где-то есть какое-то несоответствие.

2 ответа

Решение

Я предполагаю, что что-то недавно изменилось в ggplot2 для вызова функции сетки, чтобы оценить единицу сетки, которая требует открытого устройства.

Вы можете попробовать этот обходной путь,

glist <- lapply(Plotlist, ggplotGrob)
ggsave("iris.pdf", marrangeGrob(glist, nrow = 2, ncol = 1))

При использовании обходного пути @baptiste для меня все еще оставалась пустая первая страница. Функции из ggpubr для многостраничного черчения из списка графиков у меня сработало ( отсюда):

multi.page <- ggpubr::ggarrange(plotlist = glist, nrow = 1, ncol = 2) 
ggpubr::ggexport(multi.page, filename = "multi.page.ggplot2.pdf")
Другие вопросы по тегам