Próbuję wykreślić wiele działek za pomocą ggplot2, układając je za pomocą grid.arrange(). Ponieważ udało mi się znaleźć kogoś, kto dokładnie opisałby mój problem, zacytowałem z opisu problemu z linku :
Kiedy używam ggsave()po grid.arrange()tj
grid.arrange(sgcir1,sgcir2,sgcir3,ncol=2,nrow=2) ggsave("sgcirNIR.jpg")
Nie zapisuję wykresu siatki, ale ostatni indywidualny ggplot. Czy istnieje sposób na zapisanie wyświetlanego wykresu za grid.arrange()pomocą
ggsave()lub czegoś podobnego? Inaczej niż starszym sposobem
jpeg("sgcirNIR.jpg") grid.arrange(sgcir1,sgcir2,sgcir3,ncol=2,nrow=2) dev.off()
Ten sam link daje poniższe rozwiązanie:
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
Jednak nie mogę dowiedzieć się, jak użyć ggsave()do zapisania danych wyjściowych grid.arrange()wywołania w poniższym kodzie, który jest pobierany z linku :
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())?
ggplotużycie ggsave(), rozdzielczość obrazu jest znacznie wyższa. Czy istnieje sposób na zapisanie wyjścia grid.arrange()z wysoką rozdzielczością, tak jakby to był zapisany pojedynczy wykres ggsave()? Jeśli podam na przykład opcje, png(...,height=1600, width=2500)obraz wygląda na bardzo rozmyty.
png(); grid.arrange(); ggplot(); ggplot(); dev.off()