2017-01-23 22 views
4

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

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», так что есть некоторая нестыковка где-то.

+0

Вы можете создавать свои три участка с меньшим количеством кода следующим образом: 'Plotlist <- lapply (расщепленные (ирис, ирис $ Species), функция (S) { ggplot (S, aes (x = Sepal.Width, y = Sepal.Length)) + geom_point() }) ' – eipi10

+0

А ... Хороший и лаконичный. Спасибо за совет! – LauraS

ответ

6

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

Вы можете попробовать это временное решение,

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

Спасибо! Это сработало! – LauraS

+0

также работал для меня и спас мою волосатую задницу в пятницу вечером! –