gpt4 book ai didi

r - 反转 col2rgb 和 rgb2hsv

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

我正在将颜色转换为 HSV 以重新映射颜色。事实上,我正在使用 gray.colors 生成灰色渐变。 :

(mydata <- 1 : 10) # For exposition only
cols <- gray.colors(max(mydata))

然而,我真正想要的是白红渐变而不是白黑。稍微摆弄颜色选择器让我确信,为此,交换灰度颜色的值和饱和度,然后将值设置为 1(0 的色调已经对应于红色)就足够了。

没有比这更容易的了:
hsvc <-rgb2hsv(col2rgb(cols))
hsvc['s', ] <- hsvc['v', ]
hsvc['v', ] <- 1

但是,为了绘制这些值,我现在需要将它们转换回 R 颜色值。由于缺少 hsv2col,我似乎无法执行此操作.当然,还有 hsv声称这样做,但你不能用 hsvc 的值调用它上面 – 甚至没有一列:
hsv(hsvc[, 1]) # plots *three* (wrong) colour values instead of one

R 不能直接使用 HSV 值:
plot(1, 1, pch = 20, col = cols[1])   # Works, grey dot
plot(1, 1, pch = 20, col = hsvc[, 1]) # Nothing plotted

如何从 HSV 值矩阵中取回 R 可用颜色值?

最佳答案

使用 do.callas.list将数据传递给 hsv 的相关参数:

do.call(hsv,as.list(hsvc[,1]))
[1] "#FFB3B3"

plot(1,1, pch=20, col=do.call(hsv,as.list(hsvc[,1]))) # light red dot

要对所有数据执行此操作:
plot(mydata,col=apply(hsvc,2,function(x) do.call(hsv,as.list(x)))) # a symphony of red

但看起来重新映射没有正确工作,因为强度变化不会在同一方向上工作。

关于r - 反转 col2rgb 和 rgb2hsv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17816695/

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