Skip to contents

Calculates the contrast ratio between `x` and the colors `y`. Contrast ratios can range from 1 to 21 with 1 being no contrast (same color) and 21 being highest contrast.

Usage

contrast_ratio(x, y)

Arguments

x

A color object or vector of length 1 of any of the three kinds of R color specifications, i.e., either a color name (as listed by colors()), a hexadecimal string of the form "#rrggbb" or "#rrggbbaa" (see rgb), or a positive integer i meaning palette()[i].

y

A color object or vector of any of the three kinds of R color specifications, i.e., either a color name (as listed by colors()), a hexadecimal string of the form "#rrggbb" or "#rrggbbaa" (see rgb), or a positive integer i meaning palette()[i].

Value

The elements of `y` with highest contrast to `x`.

Details

The formula for calculating contract ratio is

$$(L1 + 0.05) / (L2 + 0.05)$$

where

  • L1 is the relative luminance of the lighter of the colors, and

  • L2 is the relative luminance of the darker of the colors.

Relative luminance is calculated according to https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef.

Examples

contrast_ratio("red", "blue")
#> [1] 2.148936
contrast_ratio("grey20", grey.colors(10))
#>  [1]  1.494662  2.406117  3.332732  4.271564  5.251557  6.161825  7.168355
#>  [8]  8.109768  9.125539 10.123342
contrast_ratio("white", c("white", "black"))
#> [1]  1 21