當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R colorRamp 顏色插值


R語言 colorRamp 位於 grDevices 包(package)。

說明

這些函數返回插入一組給定顏色以創建新調色板(如 topo.colors )和色帶的函數,這些函數將間隔 映射到顏色(如 grey )。

用法

colorRamp(colors, bias = 1, space = c("rgb", "Lab"),
          interpolate = c("linear", "spline"), alpha = FALSE)
colorRampPalette(colors, ...)

參數

colors

要插值的顏色;必須是 col2rgb() 的有效參數。

bias

一個正數。較高的值會在高端提供更廣泛的顏色間隔。

space

一個字符串; RGB 或 CIE Lab 色彩空間中的插值。

interpolate

使用樣條曲線或線性插值。

alpha

邏輯:是否應該返回 alpha 通道(不透明度)值?如果指定space,則給出真值是錯誤的。

...

要傳遞給 colorRamp 的參數。

細節

CIE Lab 色彩空間在感知上大致均勻,因此可以提供更平滑、更均勻的色帶。另一方麵,通過白色從一種色調變為另一種色調的調色板在 RGB 空間中可能具有更對稱的外觀。

此函數中的轉換公式似乎並不完全準確,並且色帶可能無法達到 Lab 空間中的極值。未來的變化R顏色模型可能會改變產生的顏色space = "Lab".

colorRamp 返回一個 function,參數為 0 到 1 之間的值向量,該向量映射到 RGB 顏色值的數字矩陣,每種顏色一行,3 或 4 列。

colorRampPalette 返回一個函數,該函數采用整數參數(所需的顏色數量)並返回顏色字符向量(請參閱 rgb ),內插給定序列(類似於 heat.colorsterrain.colors )。

例子

## Both return a *function* :
colorRamp(c("red", "green"))( (0:4)/4 ) ## (x) , x in [0,1]
colorRampPalette(c("blue", "red"))( 4 ) ## (n)
## a ramp in opacity of blue values
colorRampPalette(c(rgb(0,0,1,1), rgb(0,0,1,0)), alpha = TRUE)(8)

require(graphics)

## Here space="rgb" gives palettes that vary only in saturation,
## as intended.
## With space="Lab" the steps are more uniform, but the hues
## are slightly purple.
filled.contour(volcano,
               color.palette =
                   colorRampPalette(c("red", "white", "blue")),
               asp = 1)
filled.contour(volcano,
               color.palette =
                   colorRampPalette(c("red", "white", "blue"),
                                    space = "Lab"),
               asp = 1)

## Interpolating a 'sequential' ColorBrewer palette
YlOrBr <- c("#FFFFD4", "#FED98E", "#FE9929", "#D95F0E", "#993404")
filled.contour(volcano,
               color.palette = colorRampPalette(YlOrBr, space = "Lab"),
               asp = 1)
filled.contour(volcano,
               color.palette = colorRampPalette(YlOrBr, space = "Lab",
                                                bias = 0.5),
               asp = 1)

## 'jet.colors' is "as in Matlab"
## (and hurting the eyes by over-saturation)
jet.colors <-
  colorRampPalette(c("#00007F", "blue", "#007FFF", "cyan",
                     "#7FFF7F", "yellow", "#FF7F00", "red", "#7F0000"))
filled.contour(volcano, color.palette = jet.colors, asp = 1)

## space="Lab" helps when colors don't form a natural sequence
m <- outer(1:20,1:20,function(x,y) sin(sqrt(x*y)/3))
rgb.palette <- colorRampPalette(c("red", "orange", "blue"),
                                space = "rgb")
Lab.palette <- colorRampPalette(c("red", "orange", "blue"),
                                space = "Lab")
filled.contour(m, col = rgb.palette(20))
filled.contour(m, col = Lab.palette(20))

也可以看看

插值的良好起點是 RColorBrewer 包中的 “sequential” 和 “diverging” ColorBrewer 調色板。

splinefunapproxfun 用於插值。

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Color interpolation。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。