分层着色节点的算法

标签 algorithm graph colors color-palette

我有一个网络,其中的节点是分层定义的(通过 UN SITC coding )。在我的应用程序中,每个节点都有四个递增层次特异性的标识数字(例如,参见产品 7431 ),但我定义的网络不仅仅是明显的层次结构。我想做的是分层给节点着色,但根据我的网络计算对它们进行布局,看看两者重合到什么程度。

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

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

“Analagous”似乎是我想要实现的颜色属性。简单地在 HSV/HSL 方案中定期拆分色调参数是否可以实现此目的,还是有更好的方法?

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

最佳答案

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

在摆弄 RGB 颜色立方体数周之后,我放弃并转向 HSV - 并且再也没有回头。我会识别那些定义颜色的色调,然后根据它进行排列,这样你就不会有两种黄色 - 相反,你会开始一个 x 然后添加 k 的倍数,这样你就会有这样的东西:

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

在此范围内,我会分割并可能少量置换“明度”和“饱和度”,以增加可供您使用的颜色数量。

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

关于分层着色节点的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8833214/

相关文章:

algorithm - 给定一个数字大于另一个数字的 2 个数字的可能结果数

python - tensorflow 变量名称中允许使用哪些字符?

python - 如何区分两种颜色?

html - 页面两侧不同的背景颜色

javascript - 不同大小的 block 最好分配给固定大小的桶

c++ - “use algorithms; don’ t 为多步逻辑编写代码?

algorithm - 半边结构上的多边斜面

javascript - 以编程方式确定 SVG 路径生成的形状

opencv - 从纯彩色图像中提取特征

python - 生成 N*N 矩阵的高效算法