控制 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
}