Макет подграфа в graphviz

У меня есть код для отображения двух подграфов:

graph {
    rankdir=LR;
    subgraph cluster01 {
        label="t=0"
        a0 [label="A"];
        a1 [label="B"];
        a2 [label="C"];
        a5 [label="E"];
        a0 -- a1;
        a1 -- a2 ;
        a2 -- a0;
    };

    subgraph cluster02
    {
        label="t=10"
        b0 [label="A"];
        b5 [label="E"];
        b1 [label="B"];
        b2 [label="C"];

        b0 -- b1;
        b2 -- b5;
    };

    a0--b0 [style=dotted];
    a1--b1 [style=dotted];
    a2--b2 [style=dotted];
    a5--b5 [style=dotted];
}

Этот код отображает два подграфа следующим образом:

http://i.stack.imgur.com/F23SY.png

Но я хочу, чтобы это было так:

http://i.stack.imgur.com/jUpIp.png

Я надеюсь, что кто-нибудь поможет мне исправить "rankdir", чтобы это сделать.


person bdur    schedule 17.09.2012    source источник


Ответы (1)


Следующее было достигнуто за счет использования невидимых ребер и constraint=false на некоторых ребрах:

вывод графвиза

graph {
    rankdir=LR;
    subgraph cluster01 {
        label="t=0";
        a0 [label="A"];
        a1 [label="B"];
        a2 [label="C"];
        a5 [label="E"];
        a0 -- a1;
        a1 -- a2;
        a2 -- a5 [style=invis];
        a2 -- a0 [constraint=false];
    };

    subgraph cluster02
    {
        label="t=10"
        b0 [label="A"];
        b5 [label="E"];
        b1 [label="B"];
        b2 [label="C"];

        b0 -- b1;
        b1 -- b2 [style=invis];
        b2 -- b5;
    };

    edge[constraint=false];
    a0--b0 [style=dotted];
    a1--b1 [style=dotted];
    a2--b2 [style=dotted];
    a5--b5 [style=dotted];
}
person marapet    schedule 17.09.2012
comment
Спасибо марапет. Это то, что я искал. - person bdur; 18.09.2012
comment
Определенно ли нет способа установить позиции подграфов? (Как выше или ниже друг друга?) - person Milan Lakhani; 01.04.2021