我正在尝试使用Graphviz以下列方式可视化我的源代码存储库的历史记录(从上到下或从左到右无关紧要):
m1 -> m2 ----> m3 -----> m4 -> m5
\ ^
\-> b1 -> b2 -> b3 -/
鉴于此点文件:
digraph git {
subgraph master {
m1 -> m2 -> m3 -> m4 -> m5
}
subgraph branch {
m2 -> b1 // branch from master
b1 -> b2 -> b3
b3 -> m4 // merge into master
}
}
我应该设置什么属性才能将子图的所有节点(属于同一个分支)放在一条直线上?
答案 0 :(得分:15)
最简单的解决方案是将分支和合并边的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
}
}
rankdir=LR
将布局从上到下更改为左右。
另见我对类似问题的回答: Forcing "main line" nodes into a straight line in Graphviz (or alternatives)
答案 1 :(得分:3)
您可以使用属性设置rank = same
我认为你的特定图形无论如何都要排列成两条完美的线条,但如果它更复杂,你可以看到效果。
例如,再添加两个连接。
// new complexity
m1 -> m5
b3 -> b1
现在,为了使新的结果图看起来更好,请尝试以下方法。
{ rankdir=LR ; rank=same ; m1; m2; m3; m4; m5 }
{ rankdir=LR ; rank=same ; b1; b2; b3 }
subgraph master {
m1 -> m2 -> m3 -> m4 -> m5
}
subgraph branch {
m2 -> b1 // branch from master
b1 -> b2 -> b3
b3 -> m4 // merge into master
}
// new complexity
m1 -> m5
b3 -> b1