强制某些连接是水平的

时间:2018-06-06 20:07:41

标签: graphviz dot

我使用DOT可视化lisp AST,目前生成的图片如下所示:

目前,垂直线通常指定为parent -> child;,并且使用constraint指定倾斜线,如下所示:parent -> child [constraint=false];

这种作品,但我真正想要的是一种方法,使垂直连接保持不变,每个连接将孩子向下放一行,但使水平连接实际上是水平的。这会产生看起来更像这样的东西:

这可能吗?

1 个答案:

答案 0 :(得分:2)

你可能会把它变得太复杂 - 这个简单的基本代码可以完成这项工作:

digraph so
{
  # nodes
  A[ label = "list" ];
  B[ label = "ident: +" ];
  C[ label = "literal: 1" ];
  D[ label = "list" ];
  E[ label = "ident: *" ];
  F[ label = "literal: 3" ];
  G[ label = "literal: 2" ];

  # layout
  { rank = same; B C D }
  { rank = same; E F G }

  # edges
  A -> B;
  B -> C -> D;
  D -> E;
  E -> F -> G;
}
dot -T png -o so.png so.dot编译的

产生你想要的东西:

enter image description here