Graphviz:控制子图中节点的最小秩
在下图中,如何将ClassB子图移动到与顶部对齐的ClassA右侧?也就是说,我想把B类中节点的排名提高到3。 我想使用不可见的虚拟节点是可能的,但我想不出来。我也希望有一个不太“特别”的解决方案Graphviz:控制子图中节点的最小秩,graphviz,Graphviz,在下图中,如何将ClassB子图移动到与顶部对齐的ClassA右侧?也就是说,我想把B类中节点的排名提高到3。 我想使用不可见的虚拟节点是可能的,但我想不出来。我也希望有一个不太“特别”的解决方案 digraph G { graph [rankdir=LR]; 0 -> 1 -> 2 -> 3; subgraph cluster_SEM_SAD_analysis { graph [label="main"
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
您希望类B集群中的节点位于类1的method2以下的级别。您可以通过在它们之间引入不可见的边来实现这一点。这不是“特别的”,而是固有的graphviz
逻辑
添加,作为代码的最后一行
ClassA__method2 -> ClassB__method1[ style = invis, weight = 100 ];
你得到了什么
这可能就是你想要的。通过weight=100
元素可以在顶部对齐第三个簇。谢谢。我需要的是一条看不见的边,而不是一个节点。但是我会考虑这个特设,因为它需要计算出类中具有最大秩的节点和在类B中具有最小秩的节点,并在它们之间创建一个边缘。更一般的方法是类似“子图簇”{minrank=3;…}的方法,但我想这在dot中并不存在。不管怎样,这个解决方案目前还可以。