Estoy tratando de trazar varias parcelas usando ggplot2
, organizándolas usando grid.arrange()
. Como logré encontrar a alguien que describa el problema exacto que tengo, he citado la descripción del problema en el enlace :
Cuando uso ggsave()
después grid.arrange()
, es decir
grid.arrange(sgcir1,sgcir2,sgcir3,ncol=2,nrow=2) ggsave("sgcirNIR.jpg")
No guardo el diagrama de cuadrícula sino el último ggplot individual. ¿Hay alguna forma de guardar realmente la trama como se muestra mediante el grid.arrange()
uso
ggsave()
o algo similar? Aparte de usar la forma más antigua
jpeg("sgcirNIR.jpg") grid.arrange(sgcir1,sgcir2,sgcir3,ncol=2,nrow=2) dev.off()
El mismo enlace da la solución a continuación:
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
Sin embargo, no puedo entender cómo usar ggsave()
para guardar la salida de la grid.arrange()
llamada en el siguiente código, que se toma del enlace :
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
uso ggsave()
, la resolución de la imagen es mucho mayor. ¿Hay alguna manera de guardar la salida grid.arrange()
con una alta resolución, como sería si se guardara una sola parcela ggsave()
? Si proporciono, por ejemplo, las opciones, png(...,height=1600, width=2500)
la imagen se ve muy borrosa.
png(); grid.arrange(); ggplot(); ggplot(); dev.off()