分层着色节点的算法

时间:2012-01-12 10:05:41

标签: algorithm graph colors color-palette

我有一个网络,其中节点是分层次定义的(通过UN SITC coding)。在我的应用程序中,每个节点都有四个增加层次特征的识别数字(例如,参见产品7431),但我定义的网络不仅仅是明显的层次结构。我要做的是按层次对节点进行着色,但是根据我的网络计算将它们排列出来,看看两者重合的程度。

一般来说,我正在寻找一种方法来生成N个调色板,这些调色板尽可能在视觉上与其他调色板不同(显然它随着N的增长而变得越来越不有效)然后将它们分成子调色板直到我达到所需的分层深度。

具体地说,这意味着为第一个数字选择10种基色并为每个数字生成K <= 10种颜色的调色板,其中K是第二位数可以采用的可能值的数量,并且对于第三位和第四个数字,直到我最终根据其分层信息着色所有节点。绿色是一种类型,并且在其中,某些绿色阴影定义了对应于视觉相似性的某些节点族。

似乎“Analagous”是我想要实现的颜色属性。只是在HSV / HSL计划中定期拆分hue参数可以实现这一目标还是有更好的方法?

我将在Python中实现它,但任何算法基本上都应该与语言无关。

1 个答案:

答案 0 :(得分:0)

我解决了类似的问题(可能是你正在做的事情的反面),我在比较各种图像的光谱输出,以确定基于相似性的排序。

经过数周的RGB立方体颜色摆弄后,我放弃并转向HSV - 从未回头。我会识别那些定义颜色的色调然后根据它进行置换,这样你就不会有两种有点黄色的颜色 - 相反,你会开始斧头然后加上k的倍数,这样你就会有这样的东西: / p>

x is red
x+k is yellow
x+2k is green
... so forth

在此范围内,我会细分并可能少量地将“值”和“饱和度”置换,以增加您可用的颜色数量。

如果您最终在系统之间进行转换,我使用colorsys时没有问题。