1

我已检查此链接中列出的解决方案:将 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]])

     }

绘图已生成并保存,但生成的 word 文档在 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]]并设置,我会得到一个带有空白图像的 word 文档:x=grid.arrange(p1,p2,p3,p4)addPlot

在此处输入图像描述 有没有人有关于如何将 grid.arrange 对象或循环的 ggsave 结果打印到文档(word 或 pdf)的任何解决方案?谢谢。

4

1 回答 1

2

随着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)
}
于 2017-09-27T16:28:45.153 回答