R 为一系列值指定颜色

R 为一系列值指定颜色,r,R,一个简短的问题 我有一个带数字的向量,例如: values <- c(0.104654225, 0.001781299, 0.343747296, 0.139326617, 0.375521201, 0.101218053) 但我想使用蓝色刻度,例如使用colorrmppalete或类似的东西 谢谢 我注意到有几个问题与类似的主题,但它们映射了时间间隔,我想将颜色映射为数值我想你要找的是colorRamp,而不是colorRampPalette,因为它将返回一个从0-1浮动的函子。根据中

一个简短的问题

我有一个带数字的向量,例如:

values <- c(0.104654225, 0.001781299, 0.343747296, 0.139326617, 0.375521201, 0.101218053)
但我想使用蓝色刻度,例如使用
colorrmppalete
或类似的东西

谢谢


我注意到有几个问题与类似的主题,但它们映射了时间间隔,我想将颜色映射为数值

我想你要找的是
colorRamp
,而不是
colorRampPalette
,因为它将返回一个从0-1浮动的函子。根据中示例部分的前几行,可以尝试以下操作:

f <- colorRamp(c("white", "blue"))
colors <- f(values)
f编辑:
我现在认为使用
colorrmplete()
比使用
colorrmplete()
更容易实现这一点

在实践中,您可能希望同时使用颜色比例和值的比例

## Scale your values to range between 0 and 1
rr <- range(values)
svals <- (values-rr[1])/diff(rr)
# [1] 0.2752527 0.0000000 0.9149839 0.3680242 1.0000000 0.2660587

## Play around with ends of the color range
f <- colorRamp(c("lightblue", "blue"))
colors <- rgb(f(svals)/255)

## Check that it works
image(seq_along(svals), 1, as.matrix(seq_along(svals)), col=colors,
      axes=FALSE, xlab="", ylab="")
##将值缩放到0到1之间

rr如果这是一个特定于R的问题,你应该把它放在标题中,或者至少放在问题的主体中。@Tylerduden不,他不应该,meta post只是说没有要求把语言放在标题中。尽管如此,这样做还是很好的,如果语言不是主要语言之一,就像这里一样,我建议将语言放在标题中,以便人们在不仔细阅读标签的情况下忽略问题。
plot(values,pch=19,col=f(values))
以蓝色、黄色、粉色和绿色绘制,在你得到你想要的之前,一定要好好玩玩这些颜色。根据您的操作系统,
R
可能支持也可能不支持其中一些颜色名称。您可能必须提供十六进制值。
colors <- colorRamp(c("white", "blue"))(values)
## Use n equally spaced breaks to assign each value to n-1 equal sized bins 
ii <- cut(values, breaks = seq(min(values), max(values), len = 100), 
          include.lowest = TRUE)
## Use bin indices, ii, to select color from vector of n-1 equally spaced colors
colors <- colorRampPalette(c("lightblue", "blue"))(99)[ii]

## This call then also produces the plot below
image(seq_along(values), 1, as.matrix(seq_along(values)), col = colors,
      axes = F)
f <- colorRamp(c("white", "blue"))
(colors <- rgb(f(values)/255))
# [1] "#E4E4FF" "#FFFFFF" "#A7A7FF" "#DBDBFF" "#9F9FFF" "#E5E5FF"
## Scale your values to range between 0 and 1
rr <- range(values)
svals <- (values-rr[1])/diff(rr)
# [1] 0.2752527 0.0000000 0.9149839 0.3680242 1.0000000 0.2660587

## Play around with ends of the color range
f <- colorRamp(c("lightblue", "blue"))
colors <- rgb(f(svals)/255)

## Check that it works
image(seq_along(svals), 1, as.matrix(seq_along(svals)), col=colors,
      axes=FALSE, xlab="", ylab="")