Skip to contents

Paul Tol's bright Discrete Color Scheme

Usage

scale_colour_bright(..., reverse = FALSE, aesthetics = "colour")

scale_color_bright(..., reverse = FALSE, aesthetics = "colour")

scale_fill_bright(..., reverse = FALSE, aesthetics = "fill")

scale_edge_colour_bright(..., reverse = FALSE, aesthetics = "edge_colour")

scale_edge_color_bright(..., reverse = FALSE, aesthetics = "edge_colour")

scale_edge_fill_bright(..., reverse = FALSE, aesthetics = "edge_fill")

Arguments

...

Arguments passed to ggplot2::discrete_scale().

reverse

A logical scalar. Should the resulting vector of colors be reversed?

aesthetics

A character string or vector of character strings listing the name(s) of the aesthetic(s) that this scale works with.

Value

A discrete scale.

Qualitative Color Schemes

The qualitative color schemes are used as given (no interpolation): colors are picked up to the maximum number of supported values.

PaletteMax.
bright7
highcontrast3
vibrant7
muted9
mediumcontrast6
pale6
dark6
light9

According to Paul Tol's technical note, the bright, highcontrast, vibrant and muted color schemes are color-blind safe. The mediumcontrast color scheme is designed for situations needing color pairs.

The light color scheme is reasonably distinct for both normal or colorblind vision and is intended to fill labeled cells.

The pale and dark schemes are not very distinct in either normal or colorblind vision and should be used as a text background or to highlight a cell in a table.

Refer to the original document for details about the recommended uses (see references)

References

Tol, P. (2021). Colour Schemes. SRON. Technical Note No. SRON/EPS/TN/09-002, issue 3.2. URL: https://personal.sron.nl/~pault/data/colourschemes.pdf

Author

N. Frerebeau

Examples

data(mpg, package = "ggplot2")

ggplot2::ggplot(mpg, ggplot2::aes(displ, hwy, colour = class)) +
  ggplot2::geom_point() +
  scale_colour_bright()


ggplot2::ggplot(mpg, ggplot2::aes(displ, hwy, colour = class)) +
  ggplot2::geom_point() +
  scale_colour_vibrant()


data(diamonds, package = "ggplot2")

ggplot2::ggplot(diamonds, ggplot2::aes(clarity, fill = cut)) +
  ggplot2::geom_bar() +
  scale_fill_muted()