【问题标题】:Algorithm to map Numbers to Hex Colors将数字映射到十六进制颜色的算法
【发布时间】:2010-11-19 19:38:49
【问题描述】:

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

这就是我的想法:向每个十六进制数添加一个任意数字,比如 111,以生成新颜色(并对其进行处理溢出)...所以 111*id + 起始十六进制数。

这合理吗?有没有人对 111 有建议,以便在早期颜色多样化,但不要很快修改到相同的值?假设我想要 50 种独特的颜色,尽可能多样化。

谢谢,
迈克尔

【问题讨论】:

标签: algorithm colors hex


【解决方案1】:

虽然 HSV 颜色空间在为您提供“不同外观”颜色方面可能更好,但 RGB 可能“足够好”。

您可以让 Red、Green 和 Blue 成为 {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 连续的很好,那么您可以让您的程序找到所有实际使用的 ID,并将它们映射到 0 到 63 之间的数字。 p>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    • 2018-05-04
    • 2019-06-16
    • 2021-03-08
    • 2019-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多