如何在GraphViz中控制节点位置

时间:2016-05-13 05:52:07

标签: graph tree graphviz

我有以下图表Link

我想将最后一行设为f20 f21 f22 f23,以使边f21-f11和f22-f10相互交叉。基本上这棵树会向下生长,我需要排列相同等级的所有节点(f20 f21 f22 f23)

1 个答案:

答案 0 :(得分:1)

您可以使用

的组合来实现the desired result
  • 隐形边
  • 带有 constraint=false
  • 的边缘

我将constraint=false添加到应该交叉的边缘,以免它们影响布局。然后需要2个不可见的边缘让布局引擎将节点放在正确的位置 - f21应位于f10下,f22位于f11下。

digraph G {
  dir="back";
  f00 -> f10[dir="back"];
  f00 -> f11[dir="back"];
  f10 -> f20[dir="back"];

  // invisible edges for the layout
  f11 -> f22[style=invis];
  f10 -> f21[style=invis];

  // crossing edges without constraint
  f10 -> f22[dir="back", constraint=false];
  f11 -> f21[dir="back", constraint=false];

  f11 -> f23[dir="back"];
}