Graphviz:如何使子图节点成一直线排列?

标签 graphviz

我正在尝试以下列方式使用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
    }
}
Graphviz diagram
我应该设置什么属性以将子图的所有节点(属于同一分支)放置在一条直线上?

最佳答案

最简单的解决方案是将分支和合并边的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)

关于Graphviz:如何使子图节点成一直线排列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5259782/

相关文章:

grouping - GraphViz 文件中具有相同属性的节点组

graphviz - 将 GraphML 转换为 GV 或 Dot 文件

Graphviz 点集纵横比(16 :9, 4:3 等)

python - 有没有一种简单的方法可以使用Python生成带有渐变的位图?

javascript - 如何将 graphviz 生成的 SVG 元素关联到 DOT 源代码中的元素

tree - graphviz,如何将节点放置在图像上

graphviz - 如何在类似 HTML 的标签中左对齐多于两行?

coffeescript - 可视化 LALR 语法

python - 在 Python 中绘制和渲染多路树

Graphviz 边缘不可辨别/边缘标签被覆盖