J'essaie de tracer plusieurs parcelles en utilisant ggplot2
, en les organisant en utilisant grid.arrange()
. Depuis que j'ai réussi à trouver quelqu'un décrivant le problème exact que j'ai, j'ai cité la description du problème à partir du lien :
Quand j'utilise ggsave()
après grid.arrange()
, c'est à dire
grid.arrange(sgcir1,sgcir2,sgcir3,ncol=2,nrow=2) ggsave("sgcirNIR.jpg")
Je n'enregistre pas le tracé de la grille mais le dernier ggplot individuel. Existe-t-il un moyen de sauvegarder le tracé tel qu'il est affiché en grid.arrange()
utilisant
ggsave()
ou quelque chose de similaire? Autre que d'utiliser l'ancienne méthode
jpeg("sgcirNIR.jpg") grid.arrange(sgcir1,sgcir2,sgcir3,ncol=2,nrow=2) dev.off()
Le même lien donne la solution ci-dessous:
require(grid)
require(gridExtra)
p <- arrangeGrob(qplot(1,1), textGrob("test"))
grid.draw(p) # interactive device
ggsave("saving.pdf", p) # need to specify what to save explicitly
Cependant, je ne peux pas comprendre comment utiliser ggsave()
pour enregistrer la sortie de l' grid.arrange()
appel dans le code suivant, qui est tiré du lien :
library(ggplot2)
library(gridExtra)
dsamp <- diamonds[sample(nrow(diamonds), 1000), ]
p1 <- qplot(carat, price, data=dsamp, colour=clarity)
p2 <- qplot(carat, price, data=dsamp, colour=clarity, geom="path")
g_legend<-function(a.gplot){
tmp <- ggplot_gtable(ggplot_build(a.gplot))
leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box")
legend <- tmp$grobs[[leg]]
return(legend)}
legend <- g_legend(p1)
lwidth <- sum(legend$width)
## using grid.arrange for convenience
## could also manually push viewports
grid.arrange(arrangeGrob(p1 + theme(legend.position="none"),
p2 + theme(legend.position="none"),
main ="this is a title",
left = "This is my global Y-axis title"), legend,
widths=unit.c(unit(1, "npc") - lwidth, lwidth), nrow=1)
# What code to put here to save output of grid.arrange()?
print(ggplot())
?
ggplot
utilisation ggsave()
, la résolution de l'image est beaucoup plus élevée. Existe-t-il un moyen d'enregistrer la sortie de grid.arrange()
avec une haute résolution, comme ce serait le cas s'il s'agissait d'un seul tracé enregistré avec ggsave()
? Si je fournis par exemple les options, png(...,height=1600, width=2500)
l'image semble très floue.
png(); grid.arrange(); ggplot(); ggplot(); dev.off()