Сохраняйте вывод grid.arrange в цикле и печатайте в Word (ReporteRs) или PDF-файлы.

Я проверил решение, указанное в этой ссылке: Сохранение графика grid.arrange() в файл но не могу применить к своей проблеме, решение не ясно.

У меня есть цикл, который создает четыре графика для каждого i, которые затем располагаются в grid.arrange:

    for (i in 1:n)){
p1<- ggplot(predictors, aes(x = x1, y = x2)) + geom_point()
p2<- ggplot(temp) + geom_histogram(aes(x=value)) + 
  facet_grid(. ~ variable, scales = "free_x") 
p3<- ggplot(predictors_trans) + geom_point(aes(x = trans.x1, y = trans.x2))
p4<- ggplot(temp) + geom_histogram(aes(x=value), data = temp) + 
  facet_grid(. ~ variable, scales = "free_x")

###arrange plots in grid:
plot_list[[i]] =  (grid.arrange(p1, p2, p3, p4))

###write grid to doc via ReporteRs package
mydoc2 = addPlot( doc = mydoc2, fun = print, x = plot_list[[i]], 
    vector.graphic = TRUE, par.properties = parCenter(), width = 6, heigth = 

###save all images to directory as well
ggsave(filename=paste("myplot",i,".jpg",sep=""), plot_list[[i]])

     }

графики генерируются и сохраняются, но сгенерированный текстовый документ пуст после того, как в него записывается mydoc2:

writeDoc( mydoc2, "why224.docx")
browseURL( "why224.docx" )

Я также попытался записать только изображения в PDF-файл, который оказался пустым:

pdf("plots61.pdf")
for (i in 1:n) {
             print((plot_list[[i]]))
             }
dev.off()

если я удалю x=plot_list[[i]] и установлю x=grid.arrange(p1,p2,p3,p4) в команде addPlot, я получу текстовый документ с пустым изображением внутри:

введите описание изображения здесь Есть ли у кого-нибудь решения относительно того, как распечатать объект grid.arrange или ggsave результаты цикла в документ (слово или pdf)? Благодарю.


person El_1988    schedule 27.09.2017    source источник


Ответы (1)


С ggsave используйте arrangeGrob. Этот цикл сохраняет сетки в отдельный pdf для каждой итерации:

library(ggplot2)
library(gridExtra)
for(i in 1:4) {
    p1 <- qplot(1, 1, geom = "point")
    p2 <- qplot(1, 1, geom = "point")
    p3 <- qplot(1, 1, geom = "point")
    p4 <- qplot(1, 1, geom = "point")
    g <- arrangeGrob(p1, p2, p3, p4)
    ggsave(file = paste0("myplot", i, ".pdf"), g)
}
person pogibas    schedule 27.09.2017
comment
Большое спасибо, вы знаете, как сохранить все графики каждой итерации цикла в один PDF-файл или, предпочтительно, текстовый документ? - person El_1988; 27.09.2017
comment
Разве мое решение не сохраняет их в pdf? Я не понимаю, что вы имеете в виду. - person pogibas; 27.09.2017
comment
Привет, да, это сохраняется в pdf, но сохраняет каждый в соответствующий pdf, есть ли способ сохранить все выходные данные цикла в один pdf? - person El_1988; 28.09.2017