Ich versuche, mehrere Diagramme mit zu zeichnen ggplot2und sie mit anzuordnen grid.arrange(). Da ich jemanden gefunden habe, der das genaue Problem beschreibt, habe ich aus der Problembeschreibung unter dem Link zitiert :
Wenn ich ggsave()nach grid.arrange(), dh
grid.arrange(sgcir1,sgcir2,sgcir3,ncol=2,nrow=2) ggsave("sgcirNIR.jpg")
Ich speichere nicht das Gitterdiagramm, sondern das letzte einzelne ggplot. Gibt es eine Möglichkeit, den Plot tatsächlich so zu speichern, wie er mit grid.arrange()using
 ggsave()oder ähnlichem angezeigt wird ? Anders als auf die ältere Art und Weise
jpeg("sgcirNIR.jpg") grid.arrange(sgcir1,sgcir2,sgcir3,ncol=2,nrow=2) dev.off()
Der gleiche Link gibt die folgende Lösung:
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
Ich kann jedoch nicht herausfinden, wie ggsave()die Ausgabe des grid.arrange()Aufrufs im folgenden Code gespeichert werden soll, der aus dem Link stammt :
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())?
                ggplotmit speichere ggsave(), ist die Auflösung des Bildes viel höher. Gibt es eine Möglichkeit, die Ausgabe grid.arrange()mit einer hohen Auflösung zu speichern , als wäre es ein einzelner Plot, mit dem gespeichert wird ggsave()? Wenn ich zum Beispiel die Optionen png(...,height=1600, width=2500)zur Verfügung stelle, sieht das Bild sehr verschwommen aus.
                
png(); grid.arrange(); ggplot(); ggplot(); dev.off()