Create colour spaces

These functions specify colour spaces for use in convertColor.

make.rgb(red, green, blue, name = NULL, white = "D65",
         gamma = 2.2)

colorConverter(toXYZ, fromXYZ, name, white = NULL)


Chromaticity (xy or xyY) of RGB primaries


Name for the colour space


Character string specifying the reference white (see ‘Details’.)


Display gamma (nonlinearity). A positive number or the string "sRGB"


Function to convert from XYZ tristimulus coordinates to this space


Function to convert from this space to XYZ tristimulus coordinates.


An RGB colour space is defined by the chromaticities of the red, green and blue primaries. These are given as vectors of length 2 or 3 in xyY coordinates (the Y component is not used and may be omitted). The chromaticities are defined relative to a reference white, which must be one of the CIE standard illuminants: "A", "B", "C", "D50", "D55", "D60", "E" (usually "D65").

The display gamma is most commonly 2.2, though 1.8 is used for Apple RGB. The sRGB standard specifies a more complicated function that is close to a gamma of 2.2; gamma = "sRGB" uses this function.

Colour spaces other than RGB can be specified directly by giving conversions to and from XYZ tristimulus coordinates. The functions should take two arguments. The first is a vector giving the coordinates for one colour. The second argument is the reference white. If a specific reference white is included in the definition of the colour space (as for the RGB spaces) this second argument should be ignored and may be ....


An object of class colorConverter


Conversion algorithms from

See Also


  • make.rgb
  • colorConverter
library(grDevices) (pal <- make.rgb(red = c(0.6400, 0.3300), green = c(0.2900, 0.6000), blue = c(0.1500, 0.0600), name = "PAL/SECAM RGB")) ## converter for sRGB in #rrggbb format hexcolor <- colorConverter(toXYZ = function(hex, ...) { rgb <- t(col2rgb(hex))/255 colorspaces$sRGB$toXYZ(rgb, ...) }, fromXYZ = function(xyz, ...) { rgb <- colorspaces$sRGB$fromXYZ(xyz, ..) rgb <- round(rgb, 5) if (min(rgb) < 0 || max(rgb) > 1) as.character(NA) else rgb(rgb[1], rgb[2], rgb[3])}, white = "D65", name = "#rrggbb") (cols <- t(col2rgb(palette()))) zapsmall(luv <- convertColor(cols, from = "sRGB", to = "Luv", = 255)) (hex <- convertColor(luv, from = "Luv", to = hexcolor, scale.out = NULL)) ## must make hex a matrix before using it (cc <- round(convertColor(as.matrix(hex), from = hexcolor, to = "sRGB", = NULL, scale.out = 255))) stopifnot(cc == cols)
Documentation reproduced from package grDevices, version 3.4.1, License: Part of R 3.4.1

Community examples

Looks like there are no examples yet.