Graphviz:如何将子图节点排成一条直线?

bas*_*ode 8 graphviz

我正在尝试使用Graphviz以下列方式可视化我的源代码存储库的历史记录(从上到下或从左到右无关紧要):

m1 -> m2 ----> m3 -----> m4 -> m5
    \                    ^
     \-> b1 -> b2 -> b3 -/
Run Code Online (Sandbox Code Playgroud)

鉴于此点文件:

digraph git {
    subgraph master {
        m1 -> m2 -> m3 -> m4 -> m5
    }
    subgraph branch {
        m2 -> b1 // branch from master
        b1 -> b2 -> b3
        b3 -> m4 // merge into master
    }
}
Run Code Online (Sandbox Code Playgroud)

我应该设置什么属性让子图的所有节点(属于同一个分支)放在一条直线上?

mar*_*pet 16

最简单的解决方案是weight将分支和合并边设置为0:

digraph git {
    rankdir=LR
    subgraph master {
        m1 -> m2 -> m3 -> m4 -> m5
    }
    subgraph branch {
        m2 -> b1[weight=0] // branch from master
        b1 -> b2 -> b3
        b3 -> m4[weight=0] // merge into master
    }
}
Run Code Online (Sandbox Code Playgroud)

rankdir=LR 从上到下更改布局.

graphviz图

另请参阅我对类似问题的回答: 在Graphviz中强制"主线"节点成直线(或替代)