R: Color to RGB Conversion

col2rgb {grDevices} | R Documentation

## Color to RGB Conversion

### Description

R color to RGB (red/green/blue) conversion.

### Usage

    col2rgb(col, alpha = FALSE)

### Arguments

`col` | 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]`.
`alpha` | logical value indicating whether the alpha channel (opacity) values should be returned.

### Details

`NA` (as integer or character) and `"NA"` mean transparent.

Values of `col` not of one of these types are coerced: real vectors are coerced to integer and other types to character. (factors are coerced to character: in all other cases the class is ignored when doing the coercion.)

Zero and negative values of `col` are an error.

### Value

An integer matrix with three or four (for `alpha = TRUE`) rows and number of columns the length of `col`. If `col` has names these are used as the column names of the return value.

### Author(s)

Martin Maechler and the R core team.

### See Also

`rgb`, `colors`, `palette`, etc.

The newer, more flexible interface, `convertColor()`.

### Examples

    col2rgb("peachpuff")
    col2rgb(c(blu = "royalblue", reddish = "tomato"))  # note: colnames

    col2rgb(1:8)  # the ones from the palette() (if the default)

    col2rgb(paste0("gold", 1:4))

    col2rgb("#08a0ff")
    ## all three kinds of color specifications:
    col2rgb(c(red = "red", hex = "#abcdef"))
    col2rgb(c(palette = 1:3))

    ##-- NON-INTRODUCTORY examples --

    grC <- col2rgb(paste0("gray", 0:100))
    table(print(diff(grC["red",])))  # '2' or '3': almost equidistant
    ## The 'named' grays are in between {"slate gray" is not gray, strictly}
    col2rgb(c(g66 = "gray66", darkg =  "dark gray", g67 = "gray67",
              g74 = "gray74", gray  =       "gray", g75 = "gray75",
              g82 = "gray82", light = "light gray", g83 = "gray83"))

    crgb <- col2rgb(cc <- colors())
    colnames(crgb) <- cc
    t(crgb)  # The whole table

    ccodes <- c(256^(2:0) %*% crgb)  # = internal codes
    ## How many names are 'aliases' of each other:
    table(tcc <- table(ccodes))
    length(uc <- unique(sort(ccodes))) # 502
    ## All the multiply named colors:
    mult <- uc[tcc >= 2]
    cl <- lapply(mult, function(m) cc[ccodes == m])
    names(cl) <- apply(col2rgb(sapply(cl, function(x)x[1])),
                       2, function(n)paste(n, collapse = ","))
    utils::str(cl)
    ## Not run:
     if(require(xgobi)) { ## Look at the color cube dynamically :
       tc <- t(crgb[, !duplicated(ccodes)])
       table(is.gray <- tc[,1] == tc[,2] & tc[,2] == tc[,3])  # (397, 105)
       xgobi(tc, color = c("gold", "gray")[1 + is.gray])
     }

    ## End(Not run)

[Package grDevices version 3.5.1 Index]