Skip to contents

Generates a palette by rotating base's own hue around the colour wheel, at fixed saturation and value, following standard colour-theory harmonies.

Usage

palette_harmony(
  base,
  scheme = c("complementary", "analogous", "triadic", "tetradic", "split_complementary"),
  n = 5L,
  spread = 30
)

Arguments

base

A single colour, used as the palette's starting hue (saturation and value are held fixed and shared by every returned colour).

scheme

One of "complementary" (base plus its hue rotated 180 degrees; always 2 colours), "triadic" (base plus hues rotated 120/240 degrees; always 3 colours), "tetradic" (base plus hues rotated 90/180/270 degrees; always 4 colours), "split_complementary" (base plus two hues either side of its complement, offset by spread; always 3 colours), or "analogous" (n hues centred on base, evenly spaced spread degrees apart).

n

A single positive whole number: the number of colours to return. Only used when scheme = "analogous" – every other scheme returns its own fixed colour count regardless of n.

spread

A single number (degrees): for scheme = "analogous", the spacing between adjacent hues; for scheme = "split_complementary", the offset of each returned hue from the exact complement. Unused (and silently ignored) for every other scheme.

Value

A character vector of hex colour strings.

Examples

palette_harmony("steelblue", scheme = "triadic")
#> [1] "#4682B4" "#B44682" "#82B446"
palette_harmony("steelblue", scheme = "analogous", n = 5, spread = 20)
#> [1] "#46B49D" "#46A7B4" "#4682B4" "#465DB4" "#5346B4"
draw(effect_swatch(color = palette_harmony("steelblue", scheme = "triadic")))