ggsave()
似乎不适用于网格包(请参见下文)。如何保存图p1
和图p2
的组合。以下代码仅保存ggplot()看到的最后一个图p2
。
library(tidyverse)
p1 <- ggplot(mpg, aes(fl)) + geom_bar()
p2 <- ggplot(mpg, aes(cty, hwy)) + geom_col()
grid.newpage()
grid.draw(rbind(ggplotGrob(p1), ggplotGrob(p2), size = "last"))
ggsave("mpg.png")
答案 0 :(得分:1)
请考虑使用gridExtra
。如本vignette所述,gridExtra
建立在gtable
(一种更高级别的布局方案)的基础上,为在页面上安排多个笔迹提供了更多的便利,而grid
软件包提供了用于创建图形对象(毛刺)的低级功能。
library(ggplot2)
library(gridExtra)
p1 <- ggplot(mpg, aes(fl)) + geom_bar()
p2 <- ggplot(mpg, aes(cty, hwy)) + geom_col()
p <- grid.arrange(p1, p2)
ggsave(plot=p, filename="myPlot.png")
答案 1 :(得分:0)
您必须先分配新的组合,然后使用ggsave()进行打印。
# here I name it to_print
to_print <- rbind(ggplotGrob(p1), ggplotGrob(p2), size = "last")
ggsave(filename = "mpg.png", plot = to_print)
希望这会有所帮助!
答案 2 :(得分:0)
我认为您可以做这样的事情。
#plotFile
g1=file.path(HomeDir,plotFile)
f1=grid.arrange(p1,p2, ncol=2, top=textGrob("Multiple Plots", gp=gpar(fontsize=12, font = 2))) #arranges plots within grid
g <- arrangeGrob(f1) #generates g
#save
ggsave(g1, g,width = 29.7, height = 21, units = 'cm') #saves g