我编写了一个动态生成graphviz图的脚本,其中包含一些集群。 我想定义集群的排序顺序,因为当我将图形可视化时,集群并不总是与我定义它们的顺序相同。
我尝试使用“packmode”和“sortv”属性,但也许我理解它们的使用不好。这是一个简单的exameple,我希望左边是集群B,右边是集群A:
digraph G {
pack=true;
packmode="array_u";
subgraph cluster_A {
sortv=2;
node [label="A1"] A1;
node [label="A2"] A2;
node [label="A3"] A3;
A1->A2;
A1->A3;
}
subgraph cluster_B {
sortv=1;
node [label="B1"] B1;
node [label="B2"] B2;
node [label="B3"] B3;
B1->B2;
B1->B3;
}
B1->A1 [constraint="false"];
}
我该如何解决这个问题? Tnanks提前!
答案 0 :(得分:1)
这并不完美,但如果你从群集B到群集A绘制一条不可见的边缘,它会将群集B作为群集A的前身,但稍微高一点:
digraph G {
pack=true;
packmode="array_u";
compound = "true";
subgraph cluster_A {
sortv=2;
node [label="A1"] A1;
node [label="A2"] A2;
node [label="A3"] A3;
A1->A2;
A1->A3;
}
subgraph cluster_B {
sortv=1;
node [label="B1"] B1;
node [label="B2"] B2;
node [label="B3"] B3;
B1->B2;
B1->B3;
}
B1->A1 [constraint="false"];
B1 -> A1
[
ltail = "cluster_B"
lhead = "cluster_A"
style = "invis"
]
}
只需添加compound=true
指令和不可见边缘。