Color blindness affects a large number of individuals. When communicating scientific results colour palettes must therefore be carefully chosen to be accessible to all readers.
This R package provides an implementation of Paul Tol’s colour schemes
. These schemes are ready for each type of data (qualitative,
diverging or sequential), with colours that are distinct for all people,
including colour-blind readers. This package also provides tools to
simulate colour-blindness and to test how well the colours of any
palette are identifiable. To simulate colour-blindness in
production-ready R figures you may also be interested in the
For specific uses, several scientific thematic schemes (geologic timescale, land cover, FAO soils, etc.) are implemented, but these colour schemes may not be colour-blind safe.
All these colour schemes are implemented for use with base R
Install the released version of
khroma from CRAN:
Or install the development version from GitHub with:
# install.packages("devtools") devtools::install_github("nfrerebeau/khroma")
Colour palettes and scales
library(khroma) # colour() returns a palette function bright <- colour("bright") # that when called with a single integer argument returns a vector of colours bright(7) #> blue red green yellow cyan purple grey #> "#4477AA" "#EE6677" "#228833" "#CCBB44" "#66CCEE" "#AA3377" "#BBBBBB" # Show the colour palette plot_scheme(bright(7), colours = TRUE)
library(ggplot2) # Use with ggplot2 ggplot(data = mpg, mapping = aes(x = displ, y = hwy, colour = class)) + geom_point() + scale_colour_bright()
# Test how well the colours are identifiable plot_map(bright(7))
# Simulate colour-blindness # convert() returns a modified palette function deuteranopia <- convert(bright, mode = "deuteranopia") plot_scheme(deuteranopia(7), colours = TRUE)
protanopia <- convert(bright, mode = "protanopia") plot_scheme(protanopia(7), colours = TRUE)
tritanopia <- convert(bright, mode = "tritanopia") plot_scheme(tritanopia(7), colours = TRUE)
achromatopsia <- convert(bright, mode = "achromatopsia") plot_scheme(achromatopsia(7), colours = TRUE)
Paul Tol’s Colour Schemes
Paul Tol offers carefully chosen schemes, ready for each type of data, with colours that are:
- Distinct for all people, including colour-blind readers.
- Distinct from black and white.
- Distinct on screen and paper.
- Matching well together.
All the scales presented in Paul Tol’s technical note are implemented
here, for use with
ggplot2. Refer to the original
document for details about the recommended uses.
See the vignette for a more complete overview:
Scientific colour schemes
The following scientific colour schemes are available:
- International Chronostratigraphic Chart.
- AVHRR Global Land Cover Classification.
- FAO Soil Reference Groups.
More will be added in future releases (suggestions are welcome).
Please note that the ‘khroma’ project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.
- Tol, Paul (2018). Colour Schemes. SRON. Technical Note No. SRON/EPS/TN/09-002. URL: https://personal.sron.nl/~pault/data/colourschemes.pdf.