2014-03-27 3 views
0

도트를 사용하여 컴파일하고 있습니다. 그래서 cluster0 (MATH1036 및 MATH1034)에 두 개의 노드가 있습니다. MATH1034에서 클러스터 외부의 노드 (n1)로 가장자리를 만들려고 할 때 클러스터가 꺼지고 cluster0에서 MATH1034가 제거됩니다.Graphviz가 클러스터에서 노드를 제거합니다.

digraph G { 
    labelloc="t"; 
    label=""; 
    graph [splines=spline, nodesep=1] 
    compound=true; 

    subgraph cluster0{ 
     label="Math 1"; 
     MATH1034[label="MATH1034\nAlgebra"]; 
     MATH1036[label="MATH1036\nCalculus"]; 
     {rank=same;MATH1036->MATH1034;} 
    } 
    COMS1015[label="COMS1015\nBCO"]; 
    COMS1017[label="COMS1017\nALG"]; 
    COMS1016[label="COMS1016\nDCS"]; 
    COMS1018[label="COMS1018\nADS"]; 

    subgraph cluster1{ 
     label="Math 2"; 
     MATH2007[label="MATH2007\nMC"]; 
     MATH2018[label="MATH2018\nGT"]; 
     MATH2019[label="MATH2019\nLA"]; 
     STAT2XXX[label="STAT2XXX\nIntro to MS\nor\nSTAT1003\nStats 1"]; 
    } 
    COMS2003[label="COMS2003\nAAA"]; 
    COMS2XXX[label="COMS2XXX\nMC"]; 
    COMS2002[label="COMS2002\nDBF"]; 
    COMS2001[label="COMS2001\nOS"]; 

    COMS3000[label="COMS3000\nAAI"]; 
    COMS3003[label="COMS3003\nFLA"]; 
    COMS3004[label="COMS3004\nAN"]; 
    COMS3002[label="COMS3002\nSE"]; 

    // This line will hide the formatting nodes. 
    //node[shape=none,width=0,height=0, label=""]; 

    // THIS NEXT LINE CAUSES THE PROBLEM 
    // If I remove MATH1034 from this line, things go normal. 
    {rank=same;MATH1034->n1[ltail=cluster0,dir=none ]; n1->n2->n3->n4->n5[dir=none];} 

    n1->COMS1015[style=dotted]; 
    n2->COMS1016[style=dotted]; 
    n4->COMS1017[style=dotted]; 
    n5->COMS1018[style=dotted]; 

    MATH1034 -> MATH2007[lhead=cluster1, ltail=cluster0]; 
    MATH2018 -> STAT2XXX[style=invis]; 
    MATH2007 -> MATH2019[style=invis]; 

    //edge[dir=none]; 
    n3->n6->n7[arrowhead=none]; 
    {rank=same; COMS1016->n6->COMS1017[style=invis];} 
    {rank=same; COMS2001->n7[style=invis]; n7->COMS2003;} 

    COMS1015 -> COMS2001; 
    //{rank=same; COMS1017 -> p1 -> COMS1018;} 
    //p1 -> COMS2003; 
    //p1 -> COMS2XXX; 
    COMS1017 -> COMS2XXX; 
    COMS1017 -> COMS2001; 
    COMS1017 -> COMS2003; 

    COMS1018 -> COMS2003; 
    COMS1018 -> COMS2XXX; 
    COMS1018 -> COMS2002; 

    COMS1016 -> COMS2003; 
    COMS1016 -> COMS2001[weight=100,style=invis]; 

    MATH2007 -> COMS2001[ltail=cluster1,style=dotted] 
    MATH2007 -> COMS2003[ltail=cluster1,style=dotted] 


    {rank=same;COMS2XXX -> COMS2002[dir=back, style=dotted]} 
    {rank=same;COMS2003 -> COMS2XXX[dir=back]} 

subgraph cluster5{ 
    label=""; 
    {rank=same;COMS3004 -> COMS3003 -> COMS3000 -> COMS3002[style=invis];} 
} 
    COMS2003 -> COMS3000[weight=1000]; 
    COMS1016 -> COMS3003; 

    COMS2001 -> COMS3004[weight=1000]; 
    COMS2002 -> COMS3002[weight=1000]; 

    MATH2007 -> COMS3004[ltail=cluster1,lhead=cluster5]; 

} 

MATH 모듈은 서로 옆에 있고 상자에 있어야합니다. 여기

은 매우 하나 고장 : 여기 broken layout

올바른 레이아웃이지만, MATH1034 및 N1 사이의 모서리없이 :

correct layout

어떤 도움이 정말 감사하겠습니다 나는 도처에 봤는데 아무것도 작동하지 않는 것 같습니다.

답변

0

노드 Math1034은 허용되지 않는 두 개의 서로 다른 하위 그래프에 있습니다.

경고 : dot 실제로 다음과 같은 경고를 방출 MATH1034이하는 rankset에 이미 클러스터 G

경고에서 삭제 : MATH1034 -> MATH2007 : 꼬리없는 꼬리 클러스터 cluster0 내부

경고 : MATH1034 -> N1 : 꼬리


솔루션은에서 MATH1034을 제거하는 것입니다하지 내부 꼬리 클러스터 cluster0 두 번째 클러스터를 선택하고 순위를 제한하지 않고 가장자리를 추가합니다.

{rank=same; n1[ltail=cluster0,dir=none ]; n1->n2->n3->n4->n5[dir=none];} 
MATH1034 -> n1[constraint=false]; 
관련 문제