Skip to contents

Interpolate the set of colours in palettes_palette or palettes_colour objects to create new colour palettes.

Usage

pal_ramp(
  palette,
  n = NULL,
  direction = 1,
  space = "lab",
  interpolate = c("linear", "spline")
)

# S3 method for palettes_colour
pal_ramp(
  palette,
  n = NULL,
  direction = 1,
  space = "lab",
  interpolate = c("linear", "spline")
)

# S3 method for palettes_palette
pal_ramp(
  palette,
  n = NULL,
  direction = 1,
  space = "lab",
  interpolate = c("linear", "spline")
)

Arguments

palette

An object of class palettes_palette or palettes_colour.

n

An integer specifying the number of colours to return.

direction

Sets the order of colours in the scale. If 1, the default, colours are ordered from first to last. If -1, the order of colours is reversed.

space

The colour space to interpolate in. One of: "cmy", "hsl", "hsb", "hsv", "lab" (CIE L*ab), "hunterlab" (Hunter Lab), "oklab", "lch" (CIE Lch(ab) / polarLAB), "luv", "rgb" (sRGB), "xyz", "yxy" (CIE xyY), "hcl" (CIE Lch(uv) / polarLuv), or "oklch" (Polar form of oklab).

interpolate

The interpolation method. Either "linear" (default) or "spline".

Value

An object of the same type as palette. The output has the following properties:

  • For objects of class palettes_colour: A colour vector with n colours.

  • For objects of class palettes_palette: Colour palettes with n colours in each palette.

Examples

# The class returned after interpolation matches the input class.
x <- pal_colour(c("darkslateblue", "cornflowerblue", "slategray1"))
y <- pal_palette(blues = x)
class(pal_ramp(x))
#> [1] "palettes_colour" "vctrs_vctr"     
class(pal_ramp(y))
#> [1] "palettes_palette" "vctrs_list_of"    "vctrs_vctr"       "list"            

# Choose between linear and spline interpolation.
pal_ramp(x, n = 7, interpolate = "linear")
#> <palettes_colour[7]>
#>  #483D8B
#>  #535AAB
#>  #5C77CB
#>  #6495ED
#>  #89AEF3
#>  #A9C8F9
#>  #C6E2FF
pal_ramp(x, n = 7, interpolate = "spline")
#> <palettes_colour[7]>
#>  #483D8B
#>  #495CB3
#>  #5179D4
#>  #6495ED
#>  #80B0FD
#>  #A2CAFF
#>  #C6E2FF

# Palettes will have the same length after interpolation, regardless of the
# number of colours in the original palette.
z <- pal_palette(
  Egypt = c("#DD5129", "#0F7BA2", "#43B284", "#FAB255"),
  Java  = c("#663171", "#CF3A36", "#EA7428", "#E2998A", "#0C7156")
)
pal_ramp(z, n = 5)
#> <palettes_palette[2]>
#> $Egypt
#> <palettes_colour[5]>
#>  #DD5129
#>  #737484
#>  #369694
#>  #83B479
#>  #FAB255
#> 
#> $Java
#> <palettes_colour[5]>
#>  #663171
#>  #CF3A36
#>  #EA7428
#>  #E2998A
#>  #0C7156
#>