Learn R Programming

khroma

Overview

Color blindness affects a large number of individuals. When communicating scientific results color palettes must therefore be carefully chosen to be accessible to all readers.

This R package provides an implementation of Okabe and Ito (2008), Tol (2021) and Crameri (2018) color schemes. These schemes are ready for each type of data (qualitative, diverging or sequential), with colors that are distinct for all people, including color-blind readers. This package also provides tools to simulate color-blindness and to test how well the colors of any palette are identifiable. To simulate color-blindness in production-ready R figures you may also be interested in the colorblindr package.

Tol (2021) and Crameri (2018) offer carefully chosen schemes, ready for each type of data, with colors that are:

  • Distinct for all people, including color-blind readers,
  • Distinct from black and white,
  • Distinct on screen and paper,
  • Matching well together,
  • Citable and reproducible.

See vignette("tol") and vignette("crameri") for a more complete overview.

For specific uses, several scientific thematic schemes (geologic timescale, land cover, FAO soils, etc.) are implemented, but these color schemes may not be color-blind safe.

All these color schemes are implemented for use with base R graphics or ggplot2 and ggraph.


To cite khroma in publications use:

Frerebeau N (2024). khroma: Colour Schemes for Scientific Data Visualization. Université Bordeaux Montaigne, Pessac, France. doi:10.5281/zenodo.1472077 https://doi.org/10.5281/zenodo.1472077, R package version 1.14.0, https://packages.tesselle.org/khroma/.

This package is a part of the tesselle project https://www.tesselle.org.

Installation

You can install the released version of khroma from CRAN:

install.packages("khroma")

And the development version from GitHub with:

# install.packages("remotes")
remotes::install_github("tesselle/khroma")

Usage

## Install extra packages (if needed)
# install.packages("ggplot2"))

## Load packages
library(khroma)
## Get a table of available palettes
info()
#>            palette        type max missing
#> 1             broc   diverging 256    <NA>
#> 2             cork   diverging 256    <NA>
#> 3              vik   diverging 256    <NA>
#> 4           lisbon   diverging 256    <NA>
#> 5           tofino   diverging 256    <NA>
#> 6           berlin   diverging 256    <NA>
#> 7             roma   diverging 256    <NA>
#> 8              bam   diverging 256    <NA>
#> 9           vanimo   diverging 256    <NA>
#> 10          oleron   diverging 256    <NA>
#> 11          bukavu   diverging 256    <NA>
#> 12             fes   diverging 256    <NA>
#> 13           devon  sequential 256    <NA>
#> 14         lajolla  sequential 256    <NA>
#> 15          bamako  sequential 256    <NA>
#> 16           davos  sequential 256    <NA>
#> 17          bilbao  sequential 256    <NA>
#> 18            nuuk  sequential 256    <NA>
#> 19            oslo  sequential 256    <NA>
#> 20           grayC  sequential 256    <NA>
#> 21          hawaii  sequential 256    <NA>
#> 22           lapaz  sequential 256    <NA>
#> 23           tokyo  sequential 256    <NA>
#> 24            buda  sequential 256    <NA>
#> 25           acton  sequential 256    <NA>
#> 26           turku  sequential 256    <NA>
#> 27           imola  sequential 256    <NA>
#> 28          batlow  sequential 256    <NA>
#> 29         batlowW  sequential 256    <NA>
#> 30         batlowK  sequential 256    <NA>
#> 31           brocO  sequential 256    <NA>
#> 32           corkO  sequential 256    <NA>
#> 33            vikO  sequential 256    <NA>
#> 34           romaO  sequential 256    <NA>
#> 35            bamO  sequential 256    <NA>
#> 36          bright qualitative   7    <NA>
#> 37    highcontrast qualitative   3    <NA>
#> 38         vibrant qualitative   7    <NA>
#> 39           muted qualitative   9 #DDDDDD
#> 40  mediumcontrast qualitative   6    <NA>
#> 41            pale qualitative   6    <NA>
#> 42            dark qualitative   6    <NA>
#> 43           light qualitative   9    <NA>
#> 44 discreterainbow qualitative  23 #777777
#> 45          sunset   diverging  11 #FFFFFF
#> 46       nightfall   diverging  17 #FFFFFF
#> 47            BuRd   diverging   9 #FFEE99
#> 48            PRGn   diverging   9 #FFEE99
#> 49          YlOrBr  sequential   9 #888888
#> 50      iridescent  sequential  23 #999999
#> 51    incandescent  sequential  11 #888888
#> 52   smoothrainbow  sequential  34 #666666
#> 53        okabeito qualitative   8    <NA>
#> 54   okabeitoblack qualitative   8    <NA>
#> 55    stratigraphy qualitative 175    <NA>
#> 56            soil qualitative  24    <NA>
#> 57            land qualitative  14    <NA>

Color palettes and scales

color() returns a function that when called with a single integer argument returns a vector of colors.

## Paul Tol's bright color scheme
bright <- color("bright")
bright(7)
#> [1] "#4477AA" "#EE6677" "#228833" "#CCBB44" "#66CCEE" "#AA3377" "#BBBBBB"
#> attr(,"missing")
#> [1] NA
## Plot the color scheme
plot_scheme(bright(7), colours = TRUE)
data(mpg, package = "ggplot2")

## Use with graphics
par(mar = c(5, 4, 1, 1) + 0.1)
plot(
  x = mpg$displ,
  y = mpg$hwy,
  pch = 16,
  col = palette_color_picker("bright")(mpg$class),
  xlab = "displ",
  ylab = "hwy",
  panel.first = grid(),
  las = 1
)

## Use with ggplot2
ggplot2::ggplot(data = mpg) +
  ggplot2::aes(x = displ, y = hwy, color = class) +
  ggplot2::geom_point() +
  ggplot2::theme_bw() +
  scale_color_bright()

Diagnostic tools

Test how well the colors are identifiable

## Okabe & Ito's color scheme
okabe <- color("okabe ito")

set.seed(12345)
plot_map(okabe(8))
## BuRd sequential color scheme
BuRd <- color("BuRd")

plot_tiles(BuRd(128), n = 256)

Simulate color-blindness

plot_scheme_colorblind(okabe(8))

## ggplot2 default color scheme
## (equally spaced hues around the color wheel)
x <- scales::hue_pal()(8)
plot_scheme_colorblind(x)

Contributing

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.

References

Crameri, Fabio. 2018. “Geodynamic Diagnostics, Scientific Visualisation and StagLab 3.0.” Geoscientific Model Development 11 (6): 2541–62. https://doi.org/10.5194/gmd-11-2541-2018.

Okabe, Masataka, and Key Ito. 2008. “Color Universal Design (CUD): How to Make Figures and Presentations That Are Friendly to Colorblind People.” J*FLY. https://jfly.uni-koeln.de/color/.

Tol, Paul. 2021. “Colour Schemes.” Technical note SRON/EPS/TN/09-002 3.2. SRON. https://personal.sron.nl/~pault/data/colourschemes.pdf.

Copy Link

Version

Install

install.packages('khroma')

Monthly Downloads

1,285

Version

1.14.0

License

GPL (>= 3)

Issues

Pull Requests

Stars

Forks

Last Published

August 26th, 2024

Functions in khroma (1.14.0)

plot_map

Diagnostic Map
scale_crameri_bam

Fabio Crameri's bam Diverging Color Scheme
scale_crameri_bilbao

Fabio Crameri's bilbao Sequential Color Scheme
scale_crameri_brocO

Fabio Crameri's brocO Cyclic Color Scheme
scale_crameri_bamako

Fabio Crameri's bamako Sequential Color Scheme
scale_crameri_buda

Fabio Crameri's buda Sequential Color Scheme
scale_crameri_batlowW

Fabio Crameri's batlowW Sequential Color Scheme
scale_crameri_batlowK

Fabio Crameri's batlowK Sequential Color Scheme
scale_crameri_broc

Fabio Crameri's broc Diverging Color Scheme
scale_crameri_bamO

Fabio Crameri's bamO Cyclic Color Scheme
scale_crameri_batlow

Fabio Crameri's batlow Sequential Color Scheme
scale_crameri_berlin

Fabio Crameri's berlin Diverging Color Scheme
scale_crameri_cork

Fabio Crameri's cork Diverging Color Scheme
scale_crameri_davos

Fabio Crameri's davos Sequential Color Scheme
scale_crameri_hawaii

Fabio Crameri's hawaii Sequential Color Scheme
scale_crameri_grayC

Fabio Crameri's grayC Sequential Color Scheme
scale_crameri_lajolla

Fabio Crameri's lajolla Sequential Color Scheme
scale_crameri_bukavu

Fabio Crameri's bukavu Multi-Sequential Color Scheme
scale_crameri_imola

Fabio Crameri's imola Sequential Color Scheme
scale_crameri_corkO

Fabio Crameri's corkO Cyclic Color Scheme
scale_crameri_fes

Fabio Crameri's fes Multi-Sequential Color Scheme
scale_crameri_devon

Fabio Crameri's devon Sequential Color Scheme
scale_crameri_tokyo

Fabio Crameri's tokyo Sequential Color Scheme
scale_crameri_lisbon

Fabio Crameri's lisbon Diverging Color Scheme
scale_crameri_turku

Fabio Crameri's turku Sequential Color Scheme
scale_crameri_nuuk

Fabio Crameri's nuuk Sequential Color Scheme
scale_crameri_oslo

Fabio Crameri's oslo Sequential Color Scheme
scale_crameri_tofino

Fabio Crameri's tofino Diverging Color Scheme
scale_crameri_romaO

Fabio Crameri's romaO Cyclic Color Scheme
scale_crameri_lapaz

Fabio Crameri's lapaz Sequential Color Scheme
scale_crameri_oleron

Fabio Crameri's oleron Multi-Sequential Color Scheme
scale_crameri_roma

Fabio Crameri's roma Diverging Color Scheme
scale_picker

Color Scale Builder
scale_crameri_vanimo

Fabio Crameri's vanimo Diverging Color Scheme
scale_colour_stratigraphy

Geologic Timescale Color Scheme for ggplot2 and ggraph
scale_colour_soil

FAO Soil Reference Groups Color Scheme for ggplot2 and ggraph
scale_tol_BuRd

Paul Tol's BuRd Diverging Color Scheme
scale_crameri_vikO

Fabio Crameri's vikO Cyclic Color Scheme
scale_tol_PRGn

Paul Tol's PRGn Diverging Color Scheme
scale_okabeito_discrete

Okabe and Ito's Discrete Color Scheme for ggplot2 and ggraph
scale_colour_land

AVHRR Global Land Cover Classification Color Scheme for ggplot2 and ggraph
scale_crameri_vik

Fabio Crameri's vik Diverging Color Scheme
scale_tol_discreterainbow

Paul Tol's discrete rainbow Sequential Color Scheme
scale_tol_YlOrBr

Paul Tol's YlOrBr Sequential Color Scheme
scale_tol_mediumcontrast

Paul Tol's medium contrast Discrete Color Scheme
scale_tol_iridescent

Paul Tol's iridescent Sequential Color Scheme
scale_tol_highcontrast

Paul Tol's high contrast Discrete Color Scheme
scale_tol_muted

Paul Tol's muted Discrete Color Scheme
scale_tol_bright

Paul Tol's bright Discrete Color Scheme
scale_tol_incandescent

Paul Tol's incandescent Sequential Color Scheme
scale_tol_dark

Paul Tol's dark Discrete Color Scheme
scale_tol_light

Paul Tol's light Discrete Color Scheme
scale_tol_pale

Paul Tol's pale Discrete Color Scheme
scale_tol_smoothrainbow

Paul Tol's smooth rainbow Sequential Color Scheme
scale_tol_vibrant

Paul Tol's vibrant Discrete Color Scheme
tol

Paul Tol's Color Schemes
scale_tol_nightfall

Paul Tol's nightfall Diverging Color Scheme
scale_tol_sunset

Paul Tol's sunset Diverging Color Scheme
science

Scientific Color Schemes
khroma-deprecated

Deprecated Functions in dimensio
palette_color_continuous

Color Mapping (continuous)
compare

Color Difference
palette_color_discrete

Color Mapping (discrete)
change

Simulate Color-Blindness
info

Available Schemes
khroma-package

khroma: Colour Schemes for Scientific Data Visualization
khroma-defunct

Defunct Functions in khroma
colour

Color Schemes
crameri

Fabio Crameri's Color Schemes
plot_tiles

Diagnostic Map
palette_size_range

Symbol Size Mapping
scale_crameri_acton

Fabio Crameri's acton Sequential Color Scheme
plot_scheme_colourblind

Plot Simulated Color Blindness
palette_color_picker

Color Mapping
plot.color_scheme

Plot Color Scheme
palette_shape

Symbol Mapping
plot_scheme

Plot Color Scheme