2017-09-27 4 views
0

J'ai vérifié la solution figurant dans ce lien: Saving grid.arrange() plot to file mais ne peut pas l'appliquer à mon problème, la solution est pas claire.Enregistrer sortie grid.arrange en boucle et d'impression pour mot (REPORTERS) ou des fichiers PDF

J'ai une boucle qui crée quatre parcelles pour chaque i, qui sont ensuite disposés dans un 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]]) 

    } 

les parcelles sont générées et enregistrées, et, mais le mot document généré est vide après mydoc2 est écrit à elle:

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

J'ai aussi essayé d'écrire seulement les images au format PDF, qui se révèle vide:

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

si je retire x=plot_list[[i]] et mis x=grid.arrange(p1,p2,p3,p4) dans la commande addPlot, je reçois un document Word avec une image vide à l'intérieur:

enter image description here Quelqu'un at-il des solutions quant à la façon d'imprimer objet grid.arrange ou les résultats ggsave d'un boucle à un document (word ou pdf)? Merci.

Répondre

1

Avec ggsave utilisez arrangeGrob. Cette boucle enregistre les grilles dans un pdf séparé pour chaque itération:

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) 
} 
+0

Merci beaucoup, savez-vous comment enregistrer tous les tracés de chaque itération de la boucle à un document PDF ou de préférence un document Word? –

+0

Ma solution ne les enregistre-t-elle pas dans un fichier pdf? Je ne comprends pas ce que tu veux dire. – PoGibas

+0

Salut oui ceci enregistre en pdf mais enregistre chacun à un pdf correspondant, y at-il un moyen d'enregistrer toutes les sorties de boucle à un pdf? –