This function can brighten or darken a palette of colors by an arbitrary number of steps, which is defined by a real number between -2.0 and 2.0. The transformation of a palette by a fixed step in this function will tend to apply greater darkening or lightening for those colors in the midrange compared to any very dark or very light colors in the input palette.

adjust_luminance(colors, steps)



A vector of colors that will undergo an adjustment in luminance. Each color value provided must either be a color name (in the set of colors provided by grDevices::colors()) or a hexadecimal string in the form of "#RRGGBB" or "#RRGGBBAA".


A positive or negative factor by which the luminance will be adjusted. Must be a number between -2.0 and 2.0.


A vector of color values.


This function can be useful when combined with the data_color() function's palette argument, which can use a vector of colors or any of the col_* functions from the scales package (all of which have a palette argument).


Function ID



# Get a palette of 8 pastel colors from
# the RColorBrewer package
pal <- RColorBrewer::brewer.pal(8, "Pastel2")

# Create lighter and darker variants
# of the base palette (one step lower, one
# step higher)
pal_darker  <- pal %>% adjust_luminance(-1.0)
pal_lighter <- pal %>% adjust_luminance(+1.0)

# Create a tibble and make a gt table
# from it; color each column in order of
# increasingly darker palettes (with
# `data_color()`)
tab_1 <-
  dplyr::tibble(a = 1:8, b = 1:8, c = 1:8) %>%
  gt() %>%
    columns = a,
    colors = scales::col_numeric(
      palette = pal_lighter,
      domain = c(1, 8)
  ) %>%
    columns = b,
    colors = scales::col_numeric(
      palette = pal,
      domain = c(1, 8)
  ) %>%
    columns = c,
    colors = scales::col_numeric(
      palette = pal_darker,
      domain = c(1, 8)