Javascript 动态地对数字进行颜色编码
我有一个元素序列,每个元素都有自己的ID。ID从1…n运行。我希望共享一个ID的所有元素都以相同的颜色显示 我知道我可以为每个数字定义一个颜色数组,但这是静态的,我真的不知道我会有多少个数字 到目前为止,我已经做到了:Javascript 动态地对数字进行颜色编码,javascript,java,c#,algorithm,colors,Javascript,Java,C#,Algorithm,Colors,我有一个元素序列,每个元素都有自己的ID。ID从1…n运行。我希望共享一个ID的所有元素都以相同的颜色显示 我知道我可以为每个数字定义一个颜色数组,但这是静态的,我真的不知道我会有多少个数字 到目前为止,我已经做到了: private object getIntColorString(int IDNum) { return IDNum.ToString("X6"); } 但是我没有想清楚,因为颜色之间的差别太小了。然后我做了这个: private object getIntColorS
private object getIntColorString(int IDNum)
{
return IDNum.ToString("X6");
}
但是我没有想清楚,因为颜色之间的差别太小了。然后我做了这个:
private object getIntColorString(int eventTrainingProgramID)
{
int colorCode = eventTrainingProgramID * 100;
return colorCode.ToString("X6");
}
但是,这会导致许多相同颜色的重复出现
有什么建议吗 好的,颜色可以从
000000
(黑色)变为ffffff
(白色),因此16777215个不同的值。
假设需要映射[02147483647](0到int.MAX)范围内的int
至颜色范围[016777215]
第一个问题:如果一次有16777217个或更多元素,某些颜色会重复。如果有16777216个或更少的元素,则可以将不同的颜色映射到每个ID
如果您事先知道元素的数量(#ID
=100,例如),您可以这样开始:
(颜色如果col0
)可以是(16777215/ID0
)*0#ID
(ID1的颜色)可以是(16777215/col1
)*1#ID
(ID2的颜色)可以是(16777215/col2
)*2#ID
colorJump
定义为使两种颜色与眼睛不同的最小增量。这样
(颜色如果col0
)可以是0ID0
(col1
的颜色)可以是ID1
+col0
colorJump
(col2
的颜色)可以是ID2
+col1
colorJump
等等@LuigiCortese int.Max…所以你需要。。。0x7fffffff不同颜色?或者一次可以有多少不同的值?如果你这么说。。然后是。。但重复同样的颜色也没关系。。。我可以处理一半甚至1/4的int.MAX…您可以有一个不同颜色的列表(红色、绿色、蓝色等)和一个字典来将它们分配给某个id(
字典
,id和颜色索引)。当ID太多时,您可以开始重用颜色,可能会有一些变化(样式或稍微更改给定颜色的rgb)。考虑为用户提供选择颜色的可能性,或者能够跟踪特定的ID(当它被选中时画得更大胆)等等。首先,你将如何表示颜色?整数?整数的范围是多少?使用模不是更简单吗?就像id%number\u of_different\u colors=colord\u id
?这样,如果你有两个id,ID0=0和ID1=1,颜色将是相邻的,几乎相同,这取决于id的显示顺序,我真的不知道这是否暗示在问题中。如果它被分类了,真的。