gpt4 book ai didi

r - 将颜色分配给一系列值

转载 作者:行者123 更新时间:2023-12-04 03:07:46 25 4
gpt4 key购买 nike

一个快速的问题,

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

values <- c(0.104654225, 0.001781299, 0.343747296, 0.139326617, 0.375521201, 0.101218053)

我想为这个向量分配一个渐变比例,我知道我可以用
gray(values/(max(values))

但我想使用蓝色色阶,例如使用 colorRampPalette或类似的东西,

谢谢

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

最佳答案

编辑:
我现在认为使用 colorRampPalette() 比使用 colorRamp() 更容易一些。

## 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)

在基本的 R 函数中, colorRamp() 就是你要找的。正如 dg99 所指出的,它返回一个将 [0,1] 范围内的值映射到一系列颜色的函数。

不幸的是,它返回一个 RGB 值矩阵,大多数 R 的绘图函数不能直接使用它。这些函数中的大多数都采用 col= 参数,该参数“想要”在类似于 "#E4E4FF""#9F9FFF" 的字符串中表示为十六进制值的 sRGB 值。要获得这些,您需要将 rgb() 函数应用于 colorRamp() 返回的矩阵。下面是一个例子:
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="")

enter image description here

关于r - 将颜色分配给一系列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22255465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com