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

Я пытаюсь смоделировать определенный поток с помощью 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 }
}

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

изображение

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

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 }
}

изображение с фиксированной точкой

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

Другие вопросы по тегам