Заставить некоторые соединения быть горизонтальными - PullRequest
0 голосов
/ 06 июня 2018

Я использую DOT для визуализации LISP AST, и изображение, которое генерируется в настоящее время, выглядит следующим образом:

В настоящее время вертикальные линии обычно определяются как parent -> child;, а перекошенные задаются с помощью constraint, например, так: parent -> child [constraint=false];.

Такого рода работы, но я действительно ищу способ сделать так, чтобы вертикальные соединения остались прежнимигде каждое соединение помещает дочерний элемент на одну строку вниз, но делает горизонтальные соединения фактически горизонтальными.Это создаст нечто, похожее на это:

Возможно ли это?

1 Ответ

0 голосов
/ 07 июня 2018

Вы можете сделать это слишком сложным - этот простой базовый код выполняет свою работу:

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

...