--- title: Putting plots together author: Abhijit Dasgupta, PhD --- ```{r setup, include=F, child = here::here('slides/templates/setup.Rmd')} ``` ```{r setup1, include=FALSE} setwd(here::here('slides/lectures')) library(ggpubr) library(cowplot) library(patchwork) theme_set(theme_classic()+theme(axis.text = element_text(size=14), axis.title = element_text(size=16), legend.text = element_text(size=14), legend.title = element_text(size=16), plot.title = element_text(size=18), plot.subtitle = element_text(size=16), plot.caption = element_text(size=12))) ``` layout: true
BIOF 339: Practical R
--- class: middle, inverse # Putting plots together --- ## The packages There are three excellent packages for putting separate `ggplot` graphs together in panels. 1. **ggpubr** 1. **cowplot** 1. **patchwork** --- ## The graphs ```{r, eval=T, results='hide'} plt1 <- ggplot(penguins, aes(x = species, y = body_mass_g, fill=species)) + geom_boxplot() plt2 <- ggplot(penguins, aes(x = bill_length_mm, y = body_mass_g, color = species))+ geom_point() plt3 <- ggplot(penguins, aes(x = bill_length_mm, y = flipper_length_mm, color = species))+ geom_smooth(se=F) ``` ```{r, echo=FALSE, fig.width=15, fig.height=3} ggarrange(plt1,plt2, plt3, nrow=1) ``` --- ## ggpubr ```{r, fig.height=6, fig.width=15, message=F} ggarrange(plt1, plt2, plt3, ncol = 2, nrow=2) ``` --- ## ggpubr ```{r, fig.height=6, fig.width=15, message=F} ggarrange(plt1, plt2, plt3, ncol = 2, nrow=2, common.legend = TRUE) ``` --- ## cowplot ```{r, fig.height=6, fig.width=15} cowplot::plot_grid(plt1, plt2, plt3, nrow = 2, ncol = 2) ``` --- ## cowplot ```{r, fig.height=6, fig.width=15} cowplot::plot_grid(plt1, plt2, plt3, nrow = 2, ncol = 2, labels = c('A','B','C')) ``` --- ## cowplot ```{r, fig.height=6, fig.width=15} grid1 = cowplot::plot_grid(plt1, plt2, nrow = 1, rel_widths=c(0.3, 0.7), labels=c('A','B')) cowplot::plot_grid(grid1, plt3, nrow=2, labels = c('', 'C')) ``` --- ## patchwork ```{r,fig.height=6, fig.width=15} plt1 | plt2 / plt3 ``` --- ## patchwork ```{r,fig.height=6, fig.width=15} (plt1 | plt2) / plt3 ``` --- ## patchwork ```{r,fig.height=6, fig.width=15} plt1 + plt2 + plt3 + plot_layout(ncol = 2) ``` --- ## Further references ggpubr: [https://rpkgs.datanovia.com/ggpubr/](https://rpkgs.datanovia.com/ggpubr/) cowplot: [https://wilkelab.org/cowplot/index.html](https://wilkelab.org/cowplot/index.html) and Fundamentals of Data Visualization patchwork: [https://patchwork.data-imaginist.com/index.html](https://patchwork.data-imaginist.com/index.html)