Подтвердить что ты не робот

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

Я пытаюсь моделировать определенный поток, используя 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 так, что лежит в том же столбце?

4b9b3361

Ответ 1

По крайней мере начиная с мая 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

Я не знаю, каким образом можно заставить края с той или иной стороны.