Layout 如何在GraphViz中定义集群的排序顺序?
我编写了一个脚本,动态生成graphviz图,其中包含一些集群。 我想定义集群的排序顺序,因为当我可视化图形时,集群并不总是按照我定义的顺序 我试图使用“packmode”和“sortv”属性,但也许我理解它们的用法。下面是一个简单的示例,我希望集群B位于左侧,集群a位于右侧:Layout 如何在GraphViz中定义集群的排序顺序?,layout,graph,graphviz,Layout,Graph,Graphviz,我编写了一个脚本,动态生成graphviz图,其中包含一些集群。 我想定义集群的排序顺序,因为当我可视化图形时,集群并不总是按照我定义的顺序 我试图使用“packmode”和“sortv”属性,但也许我理解它们的用法。下面是一个简单的示例,我希望集群B位于左侧,集群a位于右侧: digraph G { pack=true; packmode="array_u"; subgraph cluster_A { sortv=2; node [label="A1"]
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"];
}
我怎样才能解决这个问题?提前登记 这并不完美,但如果从簇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"
]
}
只需添加
component=true
指令和不可见边。如果跳过pack=true
选项,可以使用newrank=true
,然后使用{rank=same;A1 B1}
。然后将它们彼此相邻放置