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

Если у меня есть graphviz dot скрипт такой:

digraph g {
node [style=rounded, shape=box]

    subgraph cluster1 {
        style="invis"
        1 -> 2 -> 3 -> 4 -> 5
    }

    subgraph cluster2 {
        style="invis"
         6 -> 7

         7 -> 8 -> 11
         7 -> 9 -> 11
         7 -> 10 -> 11
    }

    edge[constraint=false];
    splines="ortho"
    5 -> 6 [weight=0]
}

Я получаю вывод, который выглядит следующим образом (что я хочу):

Однако, если метки в некоторых узлах в конце становятся слишком длинными, расположение меняется на следующее:

digraph g {
node [style=rounded, shape=box]

8 [label="very long label"]
9 [label="very long label"]
10 [label="very long label"]


    subgraph cluster1 {
        style="invis"
        1 -> 2 -> 3 -> 4 -> 5
    }

    subgraph cluster2 {
        style="invis"
         6 -> 7

         7 -> 8 -> 11
         7 -> 9 -> 11
         7 -> 10 -> 11
    }

    edge[constraint=false];
    splines="ortho"
    5 -> 6 [weight=0]
}

Как я могу предотвратить это и заставить оригинальный метод заказа произойти?

1 ответ

Решение

Вы должны будете определить свои длинные метки после определения других; graphviz Рисует узлы в порядке их определения.

digraph g {
node [style=rounded, shape=box]

    subgraph cluster1 {
        style="invis"
        1 -> 2 -> 3 -> 4 -> 5
    }

    subgraph cluster2 {
        style="invis"
         6 -> 7

         7 -> 8 -> 11
         7 -> 9 -> 11
         7 -> 10 -> 11
    }

    8 [label="very long label"]
    9 [label="very long label"]
    10 [label="very long label"]

    edge[constraint=false];
    splines="ortho"
    5 -> 6 [weight=0]
}

доходность

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