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

noc*_*bos 26 dot graphviz orthogonal edges

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

我发现了一个类似的请求,使用Dot/GraphViz发布了Family树布局,但我没有处理树,所以我希望有一个解决方案,而不插入额外的节点...

如果我构建以下图表:

digraph G {

    splines=ortho

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

    A -> B
    A -> C

    B -> D
    C -> D

}

我得到的是这个:

在此输入图像描述

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

在此输入图像描述

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

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

Pot*_*rca 38

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

在此输入图像描述

你有哪个版本?

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

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

digraph G {

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

    A -> {B, C} -> D
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述