简体   繁体   中英

ggsave() options for grid arrangements in ggplot

ggsave() doesn't seem to work with the grid package (see below). How do I save this combination of plot p1 and plot p2 . The following code only save the last plot p2 that ggplot() sees.

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")

Consider using gridExtra . As explained in this vignette , gridExtra , building off of gtable (a higher-level layout scheme), provides more facility in arranging multiple grobs on a page, while grid package provides low-level functions to create graphical objects (grobs).

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")

绘图输出

You have to assign the new combination first then use ggsave() to print it.

# here I name it to_print    
  to_print <- rbind(ggplotGrob(p1), ggplotGrob(p2), size = "last")


ggsave(filename = "mpg.png", plot = to_print)

hope this helps!

I think you can do something like this.

#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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM