【问题标题】:Forcing orthogonal (vertical or horizontal) edges with dot用点强制正交(垂直或水平)边缘
【发布时间】:2013-02-17 23:10:44
【问题描述】:

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

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

如果我构建以下图表:

有向图 G { 样条=正交 A [形状=盒子] B [形状=盒子] C [形状=盒子] D [形状=盒子] A -> B A -> C B -> D C -> D }

我得到的是这样的:

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

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

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

【问题讨论】:

    标签: graphviz dot edges orthogonal


    【解决方案1】:

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

    你有哪个版本?

    我问是因为正交边缘路由仅在 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
    }
    

    【讨论】:

    • 我正在使用 graphviz 3.2.1 并且“正交”对我也不起作用:(。它看起来就像节点之间最短的直线。