The R package ggplot2 provides a powerful and flexible approach to data visualization, and it is suitable both for rapid exploration of different visualization approaches and for producing carefully crafted publication-quality figures. However, getting ggplot2 to make figures that look exactly the way you want them to can sometimes be challenging, and beginners and experts alike can get confused by themes, scales, coords, guides, or facets. This repository houses a set of step-by-step examples demonstrating how to get the most out of ggplot2, including how to choose and customize scales, how to theme plots, and when and how to use extension packages.

The examples shown are based on the book “Fundamentals of Data Visualization.” However, there are minor differences between the figures here and the ones in the book. Most importantly, the book uses the Myriad Pro font family, which is not freely available. I have also cleaned up the ggplot2 code where appropriate, and I have made adjustments to font and figure sizes so the figures look appropriate in the default R Markdown html style.


The examples presented here require a working installation of the statistical programming language R. You can download the latest version from here. Further, when working with R, it is highly recommended to use the RStudio IDE, and you can download the latest version from here.

In addition to R and RStudio, you need a number of R packages. You can install all required packages by executing the following two commands in an R console:

# install the latest version of package "remotes" from CRAN

# install package "practicalgg" from github; this pulls in 
# all required dependencies and makes available the example data

The install_github() line will likely prompt you to update packages you have already installed. Unless you know what you’re doing, it is recommended to choose the option “CRAN packages only”. If you’re given the option to install source packages, decline this option unless you routinely install R packages from source.

You may have to repeat the install_github() command if you want to work through an example I have added after you last installed the practicalgg package.