用点强制正交(垂直或水平)边

时间:2013-03-03 22:42:44

标签: graphviz dot edges orthogonal

我想强制点只在节点之间显示垂直或水平边缘。

我在帖子Family tree layout with Dot/GraphViz找到了类似的请求,但我没有处理树,所以我希望有一个解决方案,而不插入额外的节点......

如果我构建以下图表:

digraph G {

    splines=ortho

    A [ shape=box ]
    B [ shape=box ]
    C [ shape=box ]
    D [ shape=box ]

    A -> B
    A -> C

    B -> D
    C -> D

}

我得到的是:

enter image description here

但我想要一张像这样的图表:

enter image description here

我怎样才能获得这样的渲染?

编辑:“splines”属性似乎没有按预期工作......我做错了什么?

1 个答案:

答案 0 :(得分:35)

您的语法似乎正确无误。当我运行它时,我得到正交边缘路由(各种):

enter image description here

你有哪个版本?

我问,因为正交边缘路由仅适用于2010年9月28日及更新版本的Graphviz版本。并非所有系统都包含更新的版本。在我的系统上,我必须download并手动安装Graphviz以获得比2.26.3更新的版本(从2010年1月26日开始)。

假设您的实际图形包含4个以上的节点,如果您希望线条具有弯曲并且您不想添加额外(不可见)节点,则应尝试使用 图表nodesep属性。请参阅下面的代码和图片。

digraph G {

    graph [splines=ortho, nodesep=1]
    node [shape=record]

    A -> {B, C} -> D
}

enter image description here