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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。