开发者

Graphviz - Box positioning Problem

My structure has two main chains with side nodes in sub graphs. Every thing looks nice but when i close the two chains all the boxes in the sub graphs jumps to the right side. At the end of my code you can remove the "I"->"J" then you can see the best what I mean. I am not a native English speaker, sorry about my English and I am a graphviz newbie.

digraph G {
    size ="6,6";
    node [color=black fontsize=12, shape=box, fontname=Helvetica];

subgraph {
    rank = same;
    "b"->"B"[arrowhead=none];
    }

subgraph {
    rank=same;
    "c"->"C"[arrowhead=none];
    }

subgraph {
        rank=same;
        "e"->"E" [arrowhead=none];
    }

subgraph {
    rank = same;
    "f"->"F"[arrowhead=none];
}

subgraph {
    rank = same;
    "g"->"G"[arrowhead=none];
}

"0" -> "A" -> "B" -> "C"->"D" -> "E" -> "F" -> "G" -> "H"->"I";
"0" -> "K"->"L"->"M"->"N"->"O" ->"P"->"1";

subgraph {
    rank = same;
    "L"->"l"[arrowhead=none];
}

subgraph {
    rank=same;
    "M"->"m"[arrowhead=none];
}

subgraph {
    rank=same;
    "N"->"n" [arrowhead=none];
}

subgrap开发者_Python百科h {
    rank = same;
    "O"->"o"[arrowhead=none];
}

subgraph {
    rank = same;
    "P"->"p"[arrowhead=none];
}

"1"->"J";
"I"->"J";
}

Graphviz - Box positioning Problem


and with "I"->"J"; removed:

Graphviz - Box positioning Problem


This is how I'd go about it: Create a cluster for each main chain with its side nodes:

digraph G {
    size ="6,6";
    node [color=black fontsize=12, shape=box, fontname=Helvetica];

    subgraph[style=invis];

    subgraph cluster0 {
        A -> B -> C -> D -> E -> F -> G -> H -> I;
        edge[arrowhead=none];
        {rank = same; b->B;}
        {rank = same; c->C;}
        {rank = same; e->E;}
        {rank = same; f->F;}
        {rank = same; g->G;}
    }

    subgraph cluster1 {
        K -> L -> M -> N -> O -> P -> 1 -> J;
        edge[arrowhead=none];
        {rank = same; L->l;}
        {rank = same; M->m;}
        {rank = same; N->n;}
        {rank = same; O->o;}
        {rank = same; P->p;}
    }
    0 -> A;
    0 -> K;
    I -> J;
}

Resulting in:

Graphviz - Box positioning Problem

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜