我有一个数值列表。如果需要,我可能会对这些值进行标准化。
我需要将这个列表转换成一个颜色列表(在HSL,RGB或任何其他颜色模型中-我总是可以在以后进行转换)。
对于任何给定值,颜色必须每次都相同。
两个给定的数值越不同,相应的值就应该有越大的对比度。
所有使用的颜色必须尽可能地相互对比(这是一个软限制,粗略的解决方案就可以了)。
请注意,列表相当大(数千个数字),因此简单地将所有数字压缩到一个颜色通道中会产生过于密集的结果。
发布于 2009-01-30 23:37:49
你可以考虑在你选择的色彩空间中使用3D space-filling curve。我会支持马克的CIELAB建议,希望我上次解决类似问题时就知道了。
发布于 2009-01-30 23:30:28
无论您最终采用哪种算法,都可以尝试使用CIELAB颜色空间。它对人类颜色感知的差异进行了归一化,因此相等的数字间距会产生相同的感知差异。
发布于 2009-01-30 23:13:12
请参阅:How to automatically generate N "distinct" colors?
最好是标准化你的值,并通过我建议的代码运行它们(其中hue ==你的值),构建一个映射/散列。(您可以改用散列样式的函数,这可能更有效。)
例如,您可以使用数字中的一些预定位来“随机化”亮度(或亮度,取决于您的型号)和饱和度。
https://stackoverflow.com/questions/497635
复制相似问题