Graphviz:控制子图中节点的最小等级
Graphviz: control minimum rank of nodes in subgraph
在下图中,如何将 ClassB 子图移动到 ClassA 的右侧,并在顶部对齐? IE。我想将 ClassB 中的节点等级提高到 3。
我想使用不可见的虚拟节点可能是可能的,但我无法弄清楚。我也希望有一个不那么“临时”的解决方案。
digraph G {
graph [rankdir=LR];
0 -> 1 -> 2 -> 3;
subgraph cluster_SEM_SAD_analysis {
graph [label="main"];
main [label="main"];
}
subgraph cluster_ClassA {
graph [label="ClassA"];
ClassA__method1 [label="method1"];
ClassA__method2 [label="method2"];
}
subgraph cluster_ClassB {
graph [label="ClassB"];
ClassB__method1 [label="method1"];
ClassB__method2 [label="method2"];
}
main -> ClassA__method1;
ClassA__method1 -> ClassB__method1;
ClassA__method1 -> ClassA__method2;
ClassA__method1 -> ClassB__method2
}
您需要告诉 graphviz
您希望 Class B 集群中的节点位于 method2[= Class 1 的 28=]。您可以通过在它们之间引入一条无形的边缘来实现这一点。这不是“临时”,而是固有的 graphviz
逻辑。
添加,作为代码的最后一行
ClassA__method2 -> ClassB__method1[ style = invis, weight = 100 ];
你得到
这可能就是您想要的。对齐顶部的第三个簇是通过 weight = 100
元素实现的。
在下图中,如何将 ClassB 子图移动到 ClassA 的右侧,并在顶部对齐? IE。我想将 ClassB 中的节点等级提高到 3。 我想使用不可见的虚拟节点可能是可能的,但我无法弄清楚。我也希望有一个不那么“临时”的解决方案。
digraph G {
graph [rankdir=LR];
0 -> 1 -> 2 -> 3;
subgraph cluster_SEM_SAD_analysis {
graph [label="main"];
main [label="main"];
}
subgraph cluster_ClassA {
graph [label="ClassA"];
ClassA__method1 [label="method1"];
ClassA__method2 [label="method2"];
}
subgraph cluster_ClassB {
graph [label="ClassB"];
ClassB__method1 [label="method1"];
ClassB__method2 [label="method2"];
}
main -> ClassA__method1;
ClassA__method1 -> ClassB__method1;
ClassA__method1 -> ClassA__method2;
ClassA__method1 -> ClassB__method2
}
您需要告诉 graphviz
您希望 Class B 集群中的节点位于 method2[= Class 1 的 28=]。您可以通过在它们之间引入一条无形的边缘来实现这一点。这不是“临时”,而是固有的 graphviz
逻辑。
添加,作为代码的最后一行
ClassA__method2 -> ClassB__method1[ style = invis, weight = 100 ];
你得到
这可能就是您想要的。对齐顶部的第三个簇是通过 weight = 100
元素实现的。