如何自动化graphviz中节点的边缘颜色

如何自动化graphviz中节点的边缘颜色,graphviz,Graphviz,我有一个巨大的图形,在graphviz中至少有100个节点紧密连接。我正在寻找方法,可以自动边缘颜色出来的任何给定节点,这样的颜色是唯一的。我有将近30条边从每个节点出来。谢谢 我有一个类似的问题,一个节点产生大量节点 我将sfdp(dot无法处理节点数)与-Goverlap=prism选项一起使用,这样可以很好地将事物隔开。这里有一个GraphViz接受的所有颜色的列表: 如果您从自己的程序生成一个图形,拥有唯一颜色的一个简单方法是将所有这些颜色放在一个列表中,并在有新边时从该列表中选择一种颜

我有一个巨大的图形,在graphviz中至少有100个节点紧密连接。我正在寻找方法,可以自动边缘颜色出来的任何给定节点,这样的颜色是唯一的。我有将近30条边从每个节点出来。谢谢

我有一个类似的问题,一个节点产生大量节点


我将sfdp(dot无法处理节点数)与-Goverlap=prism选项一起使用,这样可以很好地将事物隔开。

这里有一个GraphViz接受的所有颜色的列表:

如果您从自己的程序生成一个图形,拥有唯一颜色的一个简单方法是将所有这些颜色放在一个列表中,并在有新边时从该列表中选择一种颜色。类似于以下伪代码:

List colors = {red, blue, green, ...};
for edge in edges:
    write(edge.source +
          " -> " +
          edge.sink +
          " [color=\"" +
          color.next() +
          "\"];\n"
    );
一种更简洁的方法是从RGB代码中定义颜色。您可以这样做:

digraph G
{

    A -> B
    [
        color="#AABBCC"
    ]

}

现在,您需要做的就是为所有边生成一个介于#000000和#FFFFFF之间的十六进制数。文档中提供了颜色格式:

您需要一些可以接受点文件并生成新的彩色点文件的东西吗?或者您是否有生成点文件的程序或脚本?(用什么语言?)

我喜欢为节点(或簇)随机选择中等强度的颜色,并将节点背景设置为该颜色的较浅版本,将现有边缘设置为该颜色的较深版本

例如,在java中,我有两种类似的实用方法

public static Color hashColor(Object value) {
    if (value == null) {
        return Color.WHITE.darker();
    } else {
        int r = 0xff - (Math.abs(1 + value.hashCode()) % 0xce);
        int g = 0xff - (Math.abs(1 + value.hashCode()) % 0xdd);
        int b = 0xff - (Math.abs(1 + value.hashCode()) % 0xec);
        return new Color(r, g, b);
    }
}        

/**
 * @return a hex Color string in the format #rrggbb. 
 */
public static String encodeColor(Color color) {
    return "#" + String.format("%06x", color.getRGB() & 0xffffff);

}