控制 GraphViz 子图集群中节点的顺序
Controlling the ordering of nodes within a GraphViz subgraph cluster
我在 GraphViz 中有两个簇子图,每个子图中的节点之间有边。我希望能够影响第二个子图中节点从上到下的排序,以实现横轴对称,并使第二个子图中的节点从上到下排序为b, c, d.
digraph {
rankdir=LR
subgraph cluster_1 {
bx -> cx
by -> cy
}
subgraph cluster_2 {
a; b; c; d
}
bx -> a
cx -> b
cy -> c
by -> d
}
现在,我明白了:
更改 cluster_2
子图中节点出现的顺序似乎无关紧要,更改底部跨簇边的顺序也无关紧要。
有没有办法让 GraphViz 生成我想要的东西?
您可以添加一些脚手架边缘 and/or 节点,即不可见 edges/nodes 但它可能有点棘手,尤其是当涉及集群时
例如:
digraph {
rankdir=LR
subgraph cluster_1 {
bx -> cx
by -> _d [dir=none]
by -> cy
_a[shape=point height=0]
_d[shape=point height=0]
bx -> _a [dir=none]
}
subgraph cluster_2 {
a; b; c; d
}
//bx -> a
cx -> b
cy -> c
//by -> d
_a->a
_d->d
}
我在 GraphViz 中有两个簇子图,每个子图中的节点之间有边。我希望能够影响第二个子图中节点从上到下的排序,以实现横轴对称,并使第二个子图中的节点从上到下排序为b, c, d.
digraph {
rankdir=LR
subgraph cluster_1 {
bx -> cx
by -> cy
}
subgraph cluster_2 {
a; b; c; d
}
bx -> a
cx -> b
cy -> c
by -> d
}
现在,我明白了:
更改 cluster_2
子图中节点出现的顺序似乎无关紧要,更改底部跨簇边的顺序也无关紧要。
有没有办法让 GraphViz 生成我想要的东西?
您可以添加一些脚手架边缘 and/or 节点,即不可见 edges/nodes 但它可能有点棘手,尤其是当涉及集群时
例如:
digraph {
rankdir=LR
subgraph cluster_1 {
bx -> cx
by -> _d [dir=none]
by -> cy
_a[shape=point height=0]
_d[shape=point height=0]
bx -> _a [dir=none]
}
subgraph cluster_2 {
a; b; c; d
}
//bx -> a
cx -> b
cy -> c
//by -> d
_a->a
_d->d
}