2009-08-14 50 views
1

这里是我的情况。假设我有两列包含不同元素的数据。我想用不同的颜色突出显示这两列之间的所有匹配元素。每个元素都有一个ID,所以我正在考虑创建一个映射函数来将ID绑定到一个十六进制颜色。有什么建议么?算法号映射到十六进制颜色

这是我的想法是:添加一个任意号码,说111,每个十六进制数,生成新的颜色(和MOD它照顾溢出)...所以111 * ID +开始的十六进制数。

,这是否合理?有没有人有对的建议,这样的颜色是多种多样的早期,但不迅速国防部为相同的值?假设我想要50种独特的颜色,尽可能多样化。

感谢,
迈克尔

+0

HTTP映射到数字的ID:/ /stackoverflow.com/questions/180/function-for-creating-color-wheels这将是有帮助 – DevDevDev 2009-08-14 23:15:28

回答

2

虽然HSV色彩空间是在给你“不同外观”颜色方面可能会更好,RGB可能是“足够好”。

你可以只让红,绿,蓝是{0,40,7F,FF}。这给出4x4x4 = 64种颜色。像这样:

Red = ID % 4 
Grn = (ID/4) % 4 
Blu = (ID/16) % 4 

print hex(floor(Red * 255/3)) //etc 

人类的眼睛应该比红/蓝更容易检测绿色的变化。所以,如果你需要更多的颜色可以让红色和蓝色取4层可能的价值观和绿色承担5(80种赋予颜色)。

如果您不希望连续的ID也是也是颜色相近,您可以创建一个数组,将ID映射到混洗的一组数字。

此外,如果你的ID不均能从0到63连续的,那么你可以让你的程序找到所有的实际上是使用和它们之间在0至63