Как принудительно поместить все узлы в один столбец в graphviz?

StackOverflow https://stackoverflow.com/questions/1476241

  •  16-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь смоделировать определенный поток с помощью graphviz, и я не могу понять, как смоделировать следующий график, чтобы использовать один и тот же горизонтальный центр

digraph exmp {
   A -> B -> C -> D
   C -> E [constraint=false]
   A -> C [style="dotted", constraint=false]
   A -> D [style="dotted",  constraint=false]
   B -> D [constraint=false]
   D -> A [style="dashed", constraint=false]
   C -> A [style="dashed", constraint=false]


   subgraph cluster_hackToSinkIt { E -> F }
   { rank="sink" E F }
}

это приводит к следующему графику:

rendered image

Мой вопрос в том, как я могу расположить E -> F под D таким образом, чтобы он находился в том же столбце?

Это было полезно?

Решение

По крайней мере по состоянию на май 2007 года, вы не можете принудительно использовать "столбцы" как таковой, но ты может применять вес к краям, которые должны способствовать принудительному выравниванию.Но на самом деле, в этом случае, если вы просто добавите невидимый край от D до E, вы получите выравнивание по вертикали.

digraph exmp {
    A -> B -> C -> D
    C -> E [constraint=false]
    A -> C [style="dotted", constraint=false]
    A -> D [style="dotted",  constraint=false]
    B -> D [constraint=false]
    D -> A [style="dashed", constraint=false]
    C -> A [style="dashed", constraint=false]
    D -> E [style="invis"] // <---- important new line


    subgraph cluster_hackToSinkIt { E -> F }
    { rank="sink" E F }
}

fixed dot image

Я не знаю ни о каком способе сдвинуть края в ту или иную сторону.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top