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")