32

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

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

如果我构建以下图表:

有向图 G {

    样条=正交

    A [形状=盒子]
    B [形状=盒子]
    C [形状=盒子]
    D [形状=盒子]

    A -> B
    A -> C

    B -> D
    C -> D

}

我得到的是:

在此处输入图像描述

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

在此处输入图像描述

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

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

4

1 回答 1

43

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

在此处输入图像描述

你有哪个版本?

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

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

digraph G {

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

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

在此处输入图像描述

于 2013-04-17T12:35:31.777 回答