【问题标题】:Forcing a node to stay on top when creating a cycle创建循环时强制节点保持在顶部
【发布时间】:2021-10-15 00:05:29
【问题描述】:

我有以下图表:


digraph G {
  u1, u2,  u3, u5 [ shape = oval, style=filled, fillcolor="palegreen"];

  u3 -> v3 -> v5_0 -> v5_1 -> v1;
  u5 -> v8 -> v5_1;
  v1 -> v5_2 -> v2; 
  u1 -> v2;
  v2 -> u2;
}

现在,我希望 u2u3 成为同一个节点,因为我希望底部的最后一个顶点在渲染图的顶部有一条上升到 u3 的边。但如果我渲染:

digraph G {
  u1, u2,  u3, u5 [ shape = oval, style=filled, fillcolor="palegreen"];

  u3 -> v3 -> v5_0 -> v5_1 -> v1;
  u5 -> v8 -> v5_1;
  v1 -> v5_2 -> v2; 
  u1 -> v2;
  v2 -> u3;
}

u3 节点最终位于图的中间。如何强制u3 位于顶部?我尝试在上面使用rank=min,但这没有帮助。

【问题讨论】:

    标签: graphviz digraphs graph-drawing


    【解决方案1】:

    2 种可能的解决方案:

    1. 在“违规”边缘使用 constraint=false (https://graphviz.org/docs/attrs/constraint/)

      u2 -> u3 [约束=假]
      这会产生一个正确但非常丑陋的边缘:

    2. 使用 dir=back反转“违规”边缘
      u3 -> u2 [dir=back] 给:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多