Graphviz圆形子图

4

我有一个由Graphviz表示的图形,其中有7个子图集。在每个子图中,有大约20个节点相互连接。

每个子图都有3到10个链接与一个或多个集群相关(例如,集群1中的一个节点到达集群2中的另一个节点)。

我想将所有子图放置在一个圆形展示中,以便我可以轻松地跟踪它们之间的链接。是否有一种方法可以实现这一点?或者至少有一种方法可以固定每个子图的位置吗?

希望你能帮助我。 谢谢。

2个回答

0

在Graphviz中不支持渲染圆形子图簇,但是您可以使用矩形子图来封装节点。以下是一个示例:

digraph G {
    layout="fdp";
    node [margin=0, fontcolor=blue, fontsize=18, width=0.4, shape=circle, style=filled]
  
    subgraph cluster_A {
        label = "Cluster A";
        a1 ["shape"="point", "color"="blue", "style"="filled", fontsize="40"]
        a2 ["shape"="point", "color"="blue", "style"="filled", fontsize="40"]
        a3 ["shape"="point", "color"="blue", "style"="filled", fontsize="40"]        
    }

    subgraph cluster_B {
        label = "Cluster B";
        b1 ["shape"="point", "color"="green", "style"="filled", fontsize="40"]
        b2 ["shape"="point", "color"="green", "style"="filled", fontsize="40"]
        b3 ["shape"="point", "color"="green", "style"="filled", fontsize="40"]   
    }
    
    subgraph cluster_C {
        label = "Cluster C";
        c1 ["shape"="point", "color"="red", "style"="filled", fontsize="40"]
        c2 ["shape"="point", "color"="red", "style"="filled", fontsize="40"]
        c3 ["shape"="point", "color"="red", "style"="filled", fontsize="40"]
    }
    
    a1 -> b1
    a2 -> b2
    a3 -> b3
    c1 -> b1
    c2 -> b2
    c3 -> b3
}

enter image description here


如果有节点属于多个子图,是否仍然可以实现这个功能? - Joseph Garvin

-1

你可以利用rank属性。这里有一个可能性。当然,您也可以通过自己的代码探索更多可能性。

digraph trial {

subgraph _1 {
 rank="same";
 p0 [label="p0"];
 p1 [label="p1"];
 p2 [label="p2"];
 p0-> p1 -> p2 -> p0;
}
subgraph _2 {   
 rank="same";  
 p3 [label="p3"];
 p4 [label="p4"];
 p3 -> p4 -> p3;
}
subgraph _3 {   
 rank="same";  
 p6 [label="p6"];
 p5 [label="p5"];
 p7 [label="p5"];
 p5 -> p6 -> p7 -> p5;
}

p3 -> p1 [color="red"];
p2 -> p5 [color="red"];
p6 -> p4 [color="red"];
}

enter image description here

你可以在这里阅读关于rank的内容:http://www.graphviz.org/doc/info/attrs.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接