From default to publication-ready ggplot2
2026-05-21
Description
In this hands-on workshop, you’ll learn how to transform standard ggplot2 outputs into clear, polished, publication-ready figures. Working through practical examples, we will cover:
- building custom themes for a consistent look
- choosing colour scales with intent (intuitive and colourblind-safe palettes)
- composing multi-panel layouts with
patchwork - exporting figures at the resolution and dimensions journals expect
Along the way I will show you a few useful extension packages from the ggplot2 ecosystem (ggtext, ggrepel, gghighlight, ggdist, ggridges) so you can pick up techniques you can apply directly to your own plots.
Resources
Workshop materials
The workshop repo contains all demo scripts, exercises, and solutions:
1. Custom themes
theme()reference doc for every theme argumentggthemes: ready-made themes if you don’t want to build your own
2. Colour
- Which color scale to use: Blogpost by Lisa Charlotte Muth, Datawrapper
- Colour pitfalls (Wilke, Fundamentals of Data Visualization): background on choosing colour and the Okabe-Ito and other CVD-safe palettes
viridis: More info on the viridis palette colorsscicoand Fabio Crameri’s colour maps for scientific palettes, designed to be fair and citablecolorBlindnessto check your plots for colourblind accessibility
3. Multi-panel layouts with patchwork
- patchwork documentation is excellent and has a gallery of examples to browse
4. Exporting figures
- Export module from ggplot2-uncharted workshop
ggviewto preview a plot at its true size before exportingraggfor fast, high-quality raster device for PNG/TIFF
Other handy packages
The official ggplot extension gallery lists ~120 community extension packages to browse
gghighlight— fade non-focal data with one lineggrepel— non-overlapping text labelsggtext— markdown / HTML in titles, axis text, and annotationsggdist— distributions and uncertainty (raincloud, halfeye, interval plots)ggridges— ridgeline / joy plots