开发者

Graphviz - Box positioning Problem

开发者 https://www.devze.com 2023-03-14 22:50 出处:网络
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.

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

精彩评论

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