Compatibility with other colour packages

library(palettes)

Overview

Because palettes supports casting and coercion for colour vectors, it is generally compatible with other colour packages and functions that accept or return colours as a character vector of "#RRGGBB" or "#RRGGBBAA", colour names from grDevices::colors(), or a positive integer that indexes into grDevices::palette().

This vignette shows how to cast and coerce colour vectors with a select number of colour packages. We use the following colour vector for demonstration.

colour_vector <- pal_colour(
  c("#a00e00", "#d04e00", "#f6c200", "#0086a8", "#132b69")
)
colour_vector
#> <palettes_colour[5]>
#> • #A00E00
#> • #D04E00
#> • #F6C200
#> • #0086A8
#> • #132B69

The same approaches below will also work for single colour palettes extracted as a colour vector using [[ or $. See the “Subsetting” section in vignette("palettes", package = "palettes") for more details.

colorspace

library(colorspace)

To turn colour vectors into sRGB objects, pass them to colorspace::hex2RGB().

colour_matrix <- hex2RGB(colour_vector)
colour_matrix
#>              R          G         B
#> [1,] 0.6274510 0.05490196 0.0000000
#> [2,] 0.8156863 0.30588235 0.0000000
#> [3,] 0.9647059 0.76078431 0.0000000
#> [4,] 0.0000000 0.52549020 0.6588235
#> [5,] 0.0745098 0.16862745 0.4117647

To convert colour matrices into a different colour space use as().

as(colour_matrix, "HLS")
#>              H         L         S
#> [1,]   5.25000 0.3137255 1.0000000
#> [2,]  22.50000 0.4078431 1.0000000
#> [3,]  47.31707 0.4823529 1.0000000
#> [4,] 192.14286 0.3294118 1.0000000
#> [5,] 223.25581 0.2431373 0.6935484

To turn colour matrices from any colour space back into colour vectors use colorspace::hex() and as_colour().

colour_strings <- hex(colour_matrix)
colour_strings
#> [1] "#A00E00" "#D04E00" "#F6C200" "#0086A8" "#132B69"

as_colour(colour_strings)
#> <palettes_colour[5]>
#> • #A00E00
#> • #D04E00
#> • #F6C200
#> • #0086A8
#> • #132B69

farver

library(farver)

To turn colour vectors into the standard form expected by farver, pass them to farver::decode_colour().

colour_matrix <- decode_colour(colour_vector)
colour_matrix
#>        r   g   b
#> [1,] 160  14   0
#> [2,] 208  78   0
#> [3,] 246 194   0
#> [4,]   0 134 168
#> [5,]  19  43 105

To convert colour matrices into a different colour space use as().

convert_colour(colour_matrix, "rgb", "lab")
#>             l          a         b
#> [1,] 33.54208  54.581655  47.36185
#> [2,] 50.52643  48.851834  60.83304
#> [3,] 80.83906   4.985885  82.46536
#> [4,] 51.69585 -18.090090 -26.58260
#> [5,] 19.58020  15.810397 -38.93221

To turn colour matrices back into colour vectors use farver::encode_colour() and as_colour().

colour_strings <- encode_colour(colour_matrix)
colour_strings
#> [1] "#A00E00" "#D04E00" "#F6C200" "#0086A8" "#132B69"

as_colour(colour_strings)
#> <palettes_colour[5]>
#> • #A00E00
#> • #D04E00
#> • #F6C200
#> • #0086A8
#> • #132B69

grDevices

library(grDevices)

To turn colour vectors into the standard form expected by grDevices, pass them to grDevices::col2rgb().

colour_matrix <- col2rgb(colour_vector)
colour_matrix
#>       [,1] [,2] [,3] [,4] [,5]
#> red    160  208  246    0   19
#> green   14   78  194  134   43
#> blue     0    0    0  168  105

To convert colour matrices into a different colour space use grDevices::convertColor() with the transpose of the colour matrix.

convertColor(t(colour_matrix), "sRGB", "Lab")
#>             L          a         b
#> [1,] 3857.402  4409.9316  3748.578
#> [2,] 5202.266  4205.9589  4814.042
#> [3,] 7730.129   541.3668  6602.094
#> [4,] 5255.133 -1327.5554 -2215.970
#> [5,] 2479.118  1571.4634 -3318.586

To turn colour matrices back into colour vectors use grDevices::rgb() and as_colour().

colour_strings <- rgb(
  r = colour_matrix[1, ], g = colour_matrix[2, ], b = colour_matrix[3, ],
  maxColorValue = 255
)
colour_strings
#> [1] "#A00E00" "#D04E00" "#F6C200" "#0086A8" "#132B69"

as_colour(colour_strings)
#> <palettes_colour[5]>
#> • #A00E00
#> • #D04E00
#> • #F6C200
#> • #0086A8
#> • #132B69