Skip to contents

contrast_ratio() calculates the contrast ratio between the color x and the color(s) y. Contrast ratios can range from 1 to 21 with 1 being no contrast (i.e., same color) and 21 being highest contrast.

Usage

contrast_ratio(x, y)

Arguments

x

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

y

A color object (see color()) or a vector of any of the three kinds of R color specifications, i.e., either a color name (as listed by grDevices::colors()), a hexadecimal string (see col2rgb()), or a positive integer i meaning grDevices::palette()[i].

Value

A numerical vector of the same length as y of the calculated contrast ratios.

Details

The formula used for calculating a contrast ratio between two colors 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/WCAG21/#dfn-relative-luminance.

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