2011-11-18 58 views
1

我喜欢随机颜色生成算法proposed here by David Crow,但我想知道是否有办法将结果集中在单一颜色上并调整结果。如何从基础颜色开始生成一般美观的线图颜色范围(数量未知)?

我的程序将生成跟踪大量变量的图形。每个变量属于7个类别之一。我想生成这些变量的线条颜色,这些变量是清晰的,独特的,并且色调,饱和度和亮度都在与其类别相关的根颜色的近似范围内。例如,Red类别的变量在红色上会有各种清晰可辨的变体。

一种解决方案可能是声明根颜色,加上色调,饱和度和亮度的上下边界。然后,我可以从这些范围内随机抽取数值,但是在这三个维度内是否有更好的跳跃方式,以便产生的颜色具有相当大的变化量,但仍然留出空间来增长?例如,假设每个管道都是范围值,每行都是一个迭代:

01 > |---------------|---------------| 
02 > |-------|-------|---------------| 
03 > |-------|-------|-------|-------| 
04 > |---|---|-------|-------|-------| 
05 > |---|---|---|---|-------|-------| 
06 > |---|---|---|---|---|---|-------| 
07 > |---|---|---|---|---|---|---|---| 
08 > |-|-|---|---|---|---|---|---|---| 
09 > |-|-|-|-|---|---|---|---|---|---| 
10 > |-|-|-|-|-|-|---|---|---|---|---| 
11 > |-|-|-|-|-|-|-|-|---|---|---|---| 
12 > |-|-|-|-|-|-|-|-|-|-|---|---|---| 
13 > |-|-|-|-|-|-|-|-|-|-|-|-|---|---| 
14 > |-|-|-|-|-|-|-|-|-|-|-|-|-|-|---| 
15 > |-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-| 

这样做的最佳方法是什么?或者这是甚至是我的问题的最佳解决方案?单个图形可能不会绘制超过4或5个变量,但可以绘制的变量数量可能会达到数百个。

感谢您的帮助。

+0

你的问题,强调我的:“什么是最好的** **方式来产生一个令人满意的**线图颜色范围......?”就我个人而言,我喜欢从绿色到绿色的颜色。所以最好的方法是使我的范围尽可能小,我最喜欢的颜色。 :-)开玩笑,我真的不觉得这个问题适合堆栈溢出,因为它的主观性和无法回答。 – corsiKa

+0

网络上有很多颜色方案生成器。我的建议是使用现有的色轮方法来构建三元组或双重补充方案的变体,具体取决于系列的数量。像[本页](http://www.worqx.com/color/combinations.htm)可能会有所帮助。 – Verbeia

+0

我认为这是一个可以接受的算法问题。 “令人愉快”的一点当然比客观更让人困惑,也不是一个简单的话题。但是OP至少在写作方面付出了一些努力。可能需要一些更详细的阐述/数据示例,并且可能需要一些奖励,因为这需要时间来回答。 (不确定有什么好的参考答案可以满足要求。) – mario

回答

3

您可以将此视为3D中的sphere-packing问题:您希望自己的颜色距离彼此均匀。最好的安排取决于您需要的变体颜色的数量,寻找最佳解决方案并不简单。然而,一个简单的机制可能是保存一系列面心立方坐标,从(0,0,0)开始并按距离该原点的距离进行排序,然后依次将它们用作“基本”颜色的偏移量(通过参数来缩放,该参数设置他们应该看起来如何不同)。

如果您想要最大限度地关注细节,请注意研究人员在color theory和知觉测量了可见色域的最小可辨色差。您可以使用此数据调整您的颜色偏移矢量(使用矩阵乘法,代替上述简单缩放),以确保您的颜色差异看起来相同。