微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当存在指向相同节点的反向链接时,如何使用Graphviz使主要箭头笔直?

如何解决当存在指向相同节点的反向链接时,如何使用Graphviz使主要箭头笔直?

给出以下图形:

digraph g {
  rankdir=LR;
  node [shape=Box];

  A;
  { rank = same;
    B; C; D; E;
  };
  A -> B [label="144"];
  B -> A [label="261"; constraint=false];
  B -> C [label="144"];
  C -> B [label="261"; constraint=false];
  C -> D [label="144"];
  D -> C [label="261"; constraint=false];
  D -> E [label="144"];
  E -> D [label="261"; constraint=false];

  B -> n1 [label="144"];
  n1 -> B [label="261"; constraint=false];
  n1 -> n2 [label="144"];
  n2 -> n1 [label="261"; constraint=false];

  C -> n3 [label="144"];
  n3 -> C [label="261"; constraint=false];
  n3 -> n4 [label="144"];
  n4 -> n3 [label="261"; constraint=false];

  D -> n5 [label="144"];
  n5 -> D [label="261"; constraint=false];
  n5 -> n6 [label="144"];
  n6 -> n5 [label="261"; constraint=false];

  E -> n7 [label="144"];
  n7 -> E [label="261"; constraint=false];
  n7 -> n8 [label="144"];
  n8 -> n7 [label="261"; constraint=false];
};

结果输出为:

graphviz output

这几乎是我想要的(特别是要弄清楚如何使字母节点的直线位于第二行很麻烦),但是我的问题在于绘制边缘箭头的方式垂直节点。

我想要的是使“前进”箭头(在图形中向右/向下移动,而没有constraint=false的箭头)是直的,而“反向”箭头(在图形中向左/向上移动)带有constraint=false)的图形。在这两种情况下,我都希望标签互不干扰。 (对于垂直箭头,这可能意味着将标签推到另一侧。)

我尝试过设置组和权重,但是到目前为止似乎没有什么可以帮助交换垂直箭头。而且我还没有发现任何可以将标签移到另一侧的东西。

我也尝试使用splines设置,但它没有任何作用。

解决方法

管理边缘位置非常困难。
这符合您的要求吗?它使用端口来调整边缘位置。

digraph g {
  rankdir=LR;
  node [shape=box];
  
  A;
  { rank = same;
    B; C; D; E;
  };
  A -> B [label="144"];
  B -> A [label="261"; constraint=false];
  B -> C [label="144"];
  C -> B:se [label="261"; constraint=false];
  C -> D [label="144"];
  D -> C:se [label="261"; constraint=false];
  D -> E [label="144"];
  E -> D:se [label="261"; constraint=false];

  B -> n1 [label="144"];
  n1 -> B [label="261"; constraint=false];
  n1 -> n2 [label="144"];
  n2 -> n1 [label="261"; constraint=false];

  C -> n3 [label="144"];
  n3 -> C [label="261"; constraint=false];
  n3 -> n4 [label="144"];
  n4 -> n3 [label="261"; constraint=false];

  D -> n5 [label="144"];
  n5 -> D [label="261"; constraint=false];
  n5 -> n6 [label="144"];
  n6 -> n5 [label="261"; constraint=false];

  E -> n7 [label="144"];
  n7 -> E [label="261"; constraint=false];
  n7 -> n8 [label="144"];
  n8 -> n7 [label="261"; constraint=false];
}

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。