【问题标题】:Forcing a diagonal edge between two nodes强制两个节点之间的对角线边
【发布时间】:2018-02-26 12:42:13
【问题描述】:

我的问题是 - 是否可以在图中的两个节点之间强制对角线?

假设两个节点之间只有一个链接。

digraph G {
    rankdir=TB
    a -> b;
}

这是渲染的:

这(模拟)是我想要的:

假设 rankdir 应该保持完整(TB = 从上到下)。我只是想控制一个边缘的角度方向。

我在文档中没有看到任何关于如何实现这一点的内容(查看here)。

所以我的问题是,这种行为是否可能,如果可能的话,还是我要求不可能?

【问题讨论】:

    标签: graphviz dot


    【解决方案1】:

    通过隐藏节点、隐藏连接和适当的样条设置,您可以得到:

    digraph G {
        splines=line
        rankdir=TB
        a:s -> b:n;
        i->b [style=invis]  
        a-> i [style=invis]
    
    {rank= same b i [style=invis]}
    }
    

    我认为更接近您的原始模型。这值得么?你决定。 :)

    【讨论】:

      【解决方案2】:

      可能有不同的方法可以解决这个问题,但是在没有清楚了解您的详细需求的情况下,我不确定这是否真的有帮助。

      例如您可以尝试东北-西南-西扩展:

      digraph G {
          rankdir=TB
          a:se -> b:nw;
      }
      

      【讨论】:

      • 这个解决方案很优雅,但我不得不选择 TomServo 提供的不太优雅但渲染更准确的解决方案。
      • 绝对完美。使用不可见节点也是我的第一个想法,但我不确定你是否可以合并这样的“虚拟”对象,所以我进一步搜索了一点......
      猜你喜欢
      • 1970-01-01
      • 2013-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-20
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      相关资源
      最近更新 更多