如何对齐点文件中的子图
How to align subgraphs in dot files
我正在尝试使用点文件和 graphviz 对齐三个或更多子图。我认为我的问题最好用几个例子来说明:
我的第一次尝试:
digraph FutopJobFlow {
rankdir=LR;
node [shape=box]
compound=true
subgraph clusterA {label = " A ";
A -> a1;
a1 -> a2;
a2 -> a3;
}
subgraph clusterB {label = " B ";
B -> b1;
b1 -> b2;
}
subgraph clusterC {label = " C ";
C -> c1;
c1 -> c2;
}
A -> B [lhead=clusterB];
B -> C [lhead=clusterC];
X -> A [lhead=clusterA];
Y -> B [lhead=clusterB];
Z -> C [lhead=clusterC];
}
得出这个结果:
这里的各个子图看起来像我想要的,但没有对齐。因此,我尝试使用命令 rank:
digraph FutopJobFlow {
rankdir=LR;
node [shape=box]
compound=true
subgraph clusterA {label = " A ";
A -> a1;
a1 -> a2;
a2 -> a3;
}
subgraph clusterB {label = " B ";
B -> b1;
b1 -> b2;
}
subgraph clusterC {label = " C ";
C -> c1;
c1 -> c2;
}
{rank=same; A; B; C;}
A -> B [lhead=clusterB];
B -> C [lhead=clusterC];
X -> A [lhead=clusterA];
Y -> B [lhead=clusterB];
Z -> C [lhead=clusterC];
}
这导致了这张图:
此处对齐看起来不错,但现在 'A'、'B' 和 'C' 不再位于子图中!
我尝试了其他几种方法来实现对齐,但 'A'、'B' 和 'C' 在它们各自的子图中,但没有成功。
有人可以帮忙吗?
@ Marapet - 感谢它现在几乎完美 - 当我添加 'constraint=false' 参数时它看起来像这样:
Graph with constraint parameter
如果子图 'A' 位于 'B' 之上,再次位于 'C'.
之上,那将是完美的
在图表的第一个版本中,您可以通过添加属性 constraint=false
:
来禁用对 A-B 和 B-C 之间边的节点排名的影响
A -> B [lhead=clusterB, constraint=false];
B -> C [lhead=clusterC, constraint=false];
然后应对齐子图。
我正在尝试使用点文件和 graphviz 对齐三个或更多子图。我认为我的问题最好用几个例子来说明:
我的第一次尝试:
digraph FutopJobFlow {
rankdir=LR;
node [shape=box]
compound=true
subgraph clusterA {label = " A ";
A -> a1;
a1 -> a2;
a2 -> a3;
}
subgraph clusterB {label = " B ";
B -> b1;
b1 -> b2;
}
subgraph clusterC {label = " C ";
C -> c1;
c1 -> c2;
}
A -> B [lhead=clusterB];
B -> C [lhead=clusterC];
X -> A [lhead=clusterA];
Y -> B [lhead=clusterB];
Z -> C [lhead=clusterC];
}
得出这个结果:
这里的各个子图看起来像我想要的,但没有对齐。因此,我尝试使用命令 rank:
digraph FutopJobFlow {
rankdir=LR;
node [shape=box]
compound=true
subgraph clusterA {label = " A ";
A -> a1;
a1 -> a2;
a2 -> a3;
}
subgraph clusterB {label = " B ";
B -> b1;
b1 -> b2;
}
subgraph clusterC {label = " C ";
C -> c1;
c1 -> c2;
}
{rank=same; A; B; C;}
A -> B [lhead=clusterB];
B -> C [lhead=clusterC];
X -> A [lhead=clusterA];
Y -> B [lhead=clusterB];
Z -> C [lhead=clusterC];
}
这导致了这张图:
此处对齐看起来不错,但现在 'A'、'B' 和 'C' 不再位于子图中!
我尝试了其他几种方法来实现对齐,但 'A'、'B' 和 'C' 在它们各自的子图中,但没有成功。
有人可以帮忙吗?
@ Marapet - 感谢它现在几乎完美 - 当我添加 'constraint=false' 参数时它看起来像这样:
Graph with constraint parameter
如果子图 'A' 位于 'B' 之上,再次位于 'C'.
之上,那将是完美的在图表的第一个版本中,您可以通过添加属性 constraint=false
:
A -> B [lhead=clusterB, constraint=false];
B -> C [lhead=clusterC, constraint=false];
然后应对齐子图。