强制某些连接水平

Force some connections to be horizontal

我正在使用 DOT 可视化一个 lisp AST,目前生成的图片是这样的:

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

这种方法可行,但我真正想要的是一种方法,使垂直连接保持不变,每个连接都将子项向下一行,但使水平连接实际上是水平的。这将创建看起来更像这样的东西:

这可能吗?

您可能把它弄得太复杂了 - 这个简单的基本代码就可以完成工作:

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编译得到你想要的: