2013-05-18 5 views
3
에서 서브 그래프에 합류 노드를 정렬 나는이 점을 다음과 같이 입력을 제공

:수직 graphviz를

digraph G { 
    subgraph cluster1 { 
    fontsize = 20; 
    label = "Group 1"; 
    A -> B -> C -> D; 
    style = "dashed"; 
    } 

    subgraph { 
    O [shape=box]; 
    } 

    subgraph cluster2 { 
    fontsize = 20; 
    label = "Group 2"; 
    Z -> Y -> X -> W [dir=back]; 
    style = "dashed"; 
    } 

    D -> O [constraint=false]; 
    W -> O [constraint=false, dir=back]; 
} 

그리고 생산 :

picture with node O aligned with A and Z

가 어떻게 그렇게 그것은을 가지고 노드 O을 정렬 할 수 있습니다 DW과 같은 등급입니까? 즉, 보이는 그래프이다 :

A Z 
| | 
B Y 
| | 
C X 
| | 
D-O-W 

{ rank=same; D; O; W; } 

오류

Warning: D was already in a rankset, ignored in cluster G 
Warning: W was already in a rankset, ignored in cluster G 
를 산출 추가 나는 내가 보이지 노드와 엣지를 추가하여 해킹 할 수 생각하고

subgraph는 O입니다. 그러나 일부 Dot 마술을 놓치고 있는지 궁금합니다.

당신은 rankdir=LR와 접근 방식을 사용하여 클러스터 내부의 가장자리에 constraint=false를 사용할 수

답변

12

:

digraph G { 
    rankdir=LR; 

    subgraph cluster1 { 
    fontsize = 20; 
    label = "Group 1"; 
    rank=same; 
    A -> B -> C -> D [constraint=false]; 
    style = "dashed"; 
    } 

    subgraph cluster2 { 
    fontsize = 20; 
    label = "Group 2"; 
    rank=same; 
    Z -> Y -> X -> W [dir=back, constraint=false]; 
    style = "dashed"; 
    } 

    O [shape=box]; 
    D -> O -> W; 
} 

그것은 마법 :-) 도트 아니에요,하지만이 달성 :

graphviz output with rankdir LR

보이지 않는 노드를 통한 해킹도 가능합니다.

digraph G { 
    subgraph cluster1 { 
    fontsize = 20; 
    label = "Group 1"; 
    A -> B -> C -> D; 
    style = "dashed"; 
    } 

    subgraph { 
    O1[style=invis]; 
    O2[style=invis]; 
    O3[style=invis]; 
    O [shape=box]; 

    O1 -> O2 -> O3 -> O [style=invis]; 
    } 

    subgraph cluster2 { 
    fontsize = 20; 
    label = "Group 2"; 
    Z -> Y -> X -> W [dir=back]; 
    style = "dashed"; 
    } 

    edge[constraint=false]; 
    D -> O -> W; 
} 

결과는 거의 동일합니다 : 프롬프트 및 정보 회신

graphviz output with invisible nodes

+0

감사합니다! 원래 보이지 않는 노드로 해킹했지만 첫 번째 솔루션으로 전환했습니다. 더 우아한 느낌과 완벽하게 작동합니다. – shadowmatter

관련 문제