当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R col2rgb 颜色到 RGB 转换


R语言 col2rgb 位于 grDevices 包(package)。

说明

R颜色到 RGB(红/绿/蓝)转换。

用法

col2rgb(col, alpha = FALSE)

参数

col

三种向量中的任意一种R颜色规格,即颜色名称(如colors()),形式为十六进制字符串"#rrggbb"或者"#rrggbbaa"(参考rgb),或正整数i意义palette()[i].

alpha

指示是否应返回 Alpha 通道(不透明度)值的逻辑值。

细节

NA (整数或字符)和 "NA" 表示透明,也可以指定为 "transparent"

不属于以下类型之一的 col 值将被强制:实向量被强制为整数,其他类型被强制为字符。 (因子被强制转换为字符:在所有其他情况下,进行强制转换时都会忽略该类。)

col 的零值和负值是错误。

具有三行或四行(对于 alpha = TRUE )且列数为 col 长度的整数矩阵。如果 col 有名称,这些名称将用作返回值的列名称。

例子

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

## How many names are 'aliases' of each other?
ccodes <- c(256^(2:0) %*% crgb)
cl <- split(cc, ccodes)
length(cl) # 502 distinct colors
table(tcc <- lengths(cl))
## All the multiply named colors:
clmult <- cl[tcc >= 2]
names(clmult) <- sapply(clmult, function(x) paste(crgb[,x[1]], collapse = ","))
utils::str(clmult)

## Look at the color cube:
tc <- t(crgb[, !duplicated(ccodes)])
cNms <- rownames(tc)
if(requireNamespace("lattice", quietly = TRUE))
    lattice::cloud(blue ~ red + green, data = as.data.frame(tc), col = cNms)
## The 8 corners of the color cube:
isC <- rowSums(tc == 0 | tc == 255) == 3
cNms[isC] # "white" "black" "blue" "cyan" "green" "magenta" "red" "yellow"

table(is.gray <- tc[,1] == tc[,2] & tc[,2] == tc[,3])  # (397, 105)

## Not run: ## Look at the color cube dynamically:
 if(require("rgl")) {
   open3d(windowRect = c(50,50, 950, 950)) # large, so we see details
   plot3d (tc, col = cNms, size = 11) # --> rotate w/ mouse; enlarged corners:
   points3d(tc[isC,], col = cNms[isC], size=22)
   bg3d("darkgray") # (to "see more"); rotate around gray-axis:
   play3d(spin3d(axis = c(1, 1, 1), rpm = 2), duration = 30)
   if(FALSE) # add all names {zoom in with 2nd mouse button!}
     text3d(tc[!is.gray,], texts = cNms[!is.gray],
                             col = cNms[!is.gray], adj=-1/4, cex = 1/2)
   if(FALSE) { ## next version of {rgl}
     hover3d(tc, labels = cNms)
     message("Move mouse over plot to identify points.")
   } else { ##  click on blob to see colors()' name:
     identify3d(tc, labels=cNms)
   }
 }

## End(Not run)

作者

Martin Maechler and the R core team.

也可以看看

rgbcolorspalette

更新、更灵活的接口 convertColor()

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Color to RGB Conversion。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。