Javascript 如何基于数组值创建不同的颜色?

Javascript 如何基于数组值创建不同的颜色?,javascript,jquery,colors,rgb,Javascript,Jquery,Colors,Rgb,我有一个从n到n+1的数组 var numbrs=[1,2,3,4,5,6,7,8,9,10]; 我想根据这些值创建不同的颜色。我认为最简单的方法是使用RGB创建它,通过在循环中更改R G&B 比如(只是一个例子): for(变量i=0;i

我有一个从n到n+1的数组

var numbrs=[1,2,3,4,5,6,7,8,9,10];
我想根据这些值创建不同的颜色。我认为最简单的方法是使用RGB创建它,通过在循环中更改R G&B

比如(只是一个例子):

for(变量i=0;i<10;i++){
var r=i*10;
var g=i*5;
变量b=i*i
var color=“rgb”(“+r+”、“+g+”、“+b+”);
}
然而,我得到的颜色是接近彼此。我需要把它们区分开来

我试过加、减、乘等等。。。但到目前为止还没有好的结果

我不想要相同颜色的色调。我需要一份好的调料

有什么想法吗?

试试这个


color=“#”+((1最好的方法是使用HSV颜色空间并在色调(H)上均匀分布颜色。对不同颜色使用中到全饱和度(较低的饱和度将为灰色)。您可能还可以使用两个不同的值(V)。参考:(包括来回到RGB的转换算法)简言之,HSV颜色与我们对颜色的感知更为密切,因此更容易进行适当调整以满足您的视觉需求(在本例中,使颜色与众不同)

因此,假设你从选择0.75作为饱和度开始。低饱和度会变成灰色。高饱和度会产生深沉或鲜艳的颜色。所选颜色应保持饱和度,否则某些颜色看起来会明显不同,而较高的饱和度值似乎意味着不同

然后决定可以有多少个值(1、2甚至3)并且仍然提供良好的清晰度。低值是黑色接近黑色,而高值是明亮和充满活力的。因此,可能值为0.5和0.8。如果值远低于0.4,则颜色会变得非常暗,以至于失去显著性。如果使用2或4个以上的值,则仅值不同的颜色的显著性将我可能迷路了

然后根据需要分配尽可能多的色调。色调控制我们通常称为“颜色”的内容。色调从0°(红色)开始然后通过一个圆圈回到起点,绿色为120°,蓝色为240°。如果使用两个单独的值,则需要的色调数为颜色数的一半。因此,如果有10种颜色,则其中一半为低值(0.4),另一半为高值(0.8)。然后为每个值指定5个等距色调。由于色调是从0到360度的一个度,这意味着您将使用色调0,并从该角度开始每隔72度使用一次(360/5=72)。因此,色调为0、72、144、216和288

然后只要转换成RGB,就可以了

基于10种所需颜色和两个选定值的HSV设置示例

  • 0°、0.75、0.4(深红色)
  • 0°、0.75、0.8(鲜红色)
  • 72°、0.75、0.4(深石灰黄)
  • 72°、0.75、0.8(亮石灰黄)
  • 144°、0.75、0.4(深绿色带蓝色)
  • 144°、0.75、0.8(亮绿色带蓝色)
  • 216°,0.75,0.4(深绿色)
  • 216°,0.75,0.8(亮水)
  • 288°,0.75,0.4(深紫色)
  • 288°,0.75,0.8(亮紫色)

一旦基本算法与HSVtoRGB函数配合使用,您应该能够非常轻松地对其进行调整以满足您的需要。

可能的重复,以及“基于这些值”的含义是什么?你看到了吗?谢谢你发布其他链接。我会把它作为正确的答案,因为它指向了正确的答案。但是它需要基于数组值。
for(var i=0;i < 10;i++){

var r = i * 10;
var g = i * 5;
var b = i * i
var color = "rgb(" + r + "," + g + "," + b + ")";

}
color = "#" + ((1 << 24) * Math.random() | 0).toString(16);