我有一个数值列表。如果需要,我可以将值标准化。
我需要将此列表转换为颜色列表(在HSL,RGB或任何其他颜色模型中 - 我以后总是可以进行转换)。
对于任何给定值,每次颜色必须相同。
两个给定的数值越不同,对应的对应值应该越多。
所有使用的颜色必须尽可能相互对比(这是一个软限制,粗略的解决方案会这样做。)
请注意,列表相当大(数千个数字),因此只需将所有数字压缩到单个颜色通道中就会产生过于密集的结果。
答案 0 :(得分:2)
无论您最终采用何种算法,都可以尝试CIELAB色彩空间。它规范了人类颜色感知的差异,因此相等的数字间距给出了相同的感知差异。
答案 1 :(得分:2)
您可以考虑通过所选颜色空间使用3D space-filling curve。我将继续Mark的CIELAB建议,希望我上次知道这个问题时我必须解决类似的问题。
答案 2 :(得分:1)
请参阅:How to automatically generate N "distinct" colors?
最好规范化你的值,并通过我建议的代码(其中hue ==你的值)运行它们,构建一个map / hash。 (您可以使用散列样式函数,这可能更有效。)
例如,您可以使用数字的某些预定位“随机化”亮度(或亮度,具体取决于您的型号)和饱和度。
答案 3 :(得分:0)
为什么不使用灰色阴影?只需计算最小值/最大值,然后使用它将每个数字转换为从白色到黑色的不同色调。
我知道这不是颜色,但在我看来,解释结果会更容易。我可以说明当事情变得更暗而更轻时它意味着什么,但是谁会说,例如,绿色比橙色更高?