In the last few years, a number of options of how to combine grid graphics (incl.
ggplot2) have emerged.
If you can’t remember all functions to do this, this post may serve as a reference guide, but it’s mostly
for me because I keep forgetting the functionalities provided by
patchwork packages (thank you Jaap). Here appearing in order I encountered them.
library(ggplot2) # prepare some figures fig1 <- ggplot(mtcars, aes(x = mpg, y = disp, color = as.factor(gear))) + theme_bw() + theme(legend.position = "top") + scale_color_discrete(name = "gear") + geom_point() fig2 <- ggplot(mtcars, aes(x = gear, y = disp, fill = as.factor(gear))) + theme_bw() + theme(legend.position = "top") + scale_fill_discrete(name = "gear") + geom_violin()
Here is oldie but goldie from Baptiste's
You can, for example, specify the layout matrix or specify number of columns. The below code chunk is using
ggplot2::ggsave which saves the last subplot only, which is why I saved the result of
grid.arrange into a new variable (but see
library(gridExtra) fig.combined1 <- grid.arrange(fig1, fig2, ncol = 2) ggsave(plot = fig.combined1, filename = "grid.arrange.png", width = 8, height = 4, units = "in", dpi = 96)
cowplot, which comes with nice vignettes. What I like about this package is the elegant adding of letters to subplots, e.g.
library(cowplot) plot_grid(fig1, fig2, labels = "AUTO") cowplot::ggsave(filename = "plotgrid.png", width = 8, height = 4, units = "in", dpi = 96)
See the vignettes for more information. Package also packs its own
ggplot which masks the function
ggsave from package
ggplot2). The beauty of it is that it saves the gridded plot, not the last (sub)plot.
Thomas did a great job of making combining of plots trivially easy. The GitHub repository of the package is a rich source of information and I could never do it justice. Here's my botched attempt of just an example of what the package functionality provides.
library(patchwork) fig1 + fig2 cowplot