Я пытаюсь построить несколько графиков, используя их ggplot2, упорядочив их используя grid.arrange(). Так как мне удалось найти кого-то, описывающего именно мою проблему, я привел цитату из описания проблемы по ссылке :
Когда я использую ggsave()после grid.arrange(), т.е.
grid.arrange(sgcir1,sgcir2,sgcir3,ncol=2,nrow=2) ggsave("sgcirNIR.jpg")
Я не сохраняю график сетки, но последний отдельный ggplot. Есть ли способ сохранить график, отображаемый с grid.arrange()помощью
ggsave()или что-то подобное? Кроме использования старого способа
jpeg("sgcirNIR.jpg") grid.arrange(sgcir1,sgcir2,sgcir3,ncol=2,nrow=2) dev.off()
Эта же ссылка дает решение ниже:
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
Однако я не могу понять, как использовать ggsave()для сохранения результатов grid.arrange()вызова в следующем коде, который взят из ссылки :
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используя ggsave(), разрешение изображения гораздо выше. Есть ли способ сохранить выходные данные grid.arrange()с высоким разрешением, как если бы это был один сохраненный график ggsave()? Если я приведу, например, параметры, png(...,height=1600, width=2500)изображение выглядит очень размытым.
png(); grid.arrange(); ggplot(); ggplot(); dev.off()