我正在寻找一种能够将给定调色板的饱和度降低一定量的功能.想象一下,我有调色板
library(colorRamps)
col.palette=colorRampPalette(rainbow(13),interpolate ="spline")(1000)
pie(rep(1,1000), col=col.palette,lty=0,labels=NA)
Run Code Online (Sandbox Code Playgroud)
是否有任何功能可以在这个col.palette
颜色矢量上工作,并将饱和度降低一定量,或者允许改变亮度和对比度?(我试图获得一个彩虹调色板,其饱和度更低,过渡比标准更平滑)
编辑:也刚刚发现muted
包scales
中的功能或多或少做我想要的:http:
//www.inside-r.org/packages/cran/scales/docs/muted
以及Josh O'Brien在下面提到的rainbow_hcl
包装colorspace
,这是我正在寻找的那种更柔和,同等强度的彩虹:http:
//www.inside-r.org/packages/cran/colorspace/docs/rainbow_hcl:
library(colorspace)
pie(rep(1,1000), col=rainbow_hcl(1000,c=100,l=60),lty=0,labels=NA)
Run Code Online (Sandbox Code Playgroud)
Jos*_*ien 16
这是一个将指定比例的输入颜色矢量去饱和的函数:
library(colorspace) ## hsv colorspace manipulations
library(RColorBrewer) ## For some example colors
## Function for desaturating colors by specified proportion
desat <- function(cols, sat=0.5) {
X <- diag(c(1, sat, 1)) %*% rgb2hsv(col2rgb(cols))
hsv(X[1,], X[2,], X[3,])
}
Run Code Online (Sandbox Code Playgroud)
这是一个行动中的例子:
## Utility function for plotting color palettes,
## (from vignette("hcl-colors"))
pal <- function(col, border = "light gray", ...) {
n <- length(col)
plot(0, 0, type="n", xlim = c(0, 1), ylim = c(0, 1),
axes = FALSE, xlab = "", ylab = "", ...)
rect(0:(n-1)/n, 0, 1:n/n, 1, col = col, border = border)
}
## Some example colors
cc <- brewer.pal(9, 'Set1')
cc75 <- desat(cc, 0.75)
cc50 <- desat(cc, 0.50)
cc25 <- desat(cc, 0.25)
## Plot 'em
par(mfcol = c(4,1), mar = c(0,0,0,0))
pal(cc)
pal(cc75)
pal(cc50)
pal(cc25)
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常:
col2 <- adjustcolor(col.palette,alpha.f=0.5)
pie(rep(1,1000), col=col2,lty=0,labels=NA)
Run Code Online (Sandbox Code Playgroud)
adjustcolor
是一个基本的R功能,可以让你以多种方式调整颜色,但我发现alpha.f
旋钮最有用.