2016-10-25 10 views
1

방금 ​​GraphViz를 발견했으며 문서와 예제를 따라 합리적으로 간단한 네트워크 다이어그램을 만들려고합니다.cluster_를 사용할 때의 서브 그래프 위치 문제

그래서 세 가지 주요 범주로 분할 해 보았습니다. 3 가지 범주가 위에서 아래로 하이퍼 바이저 -> 코어 -> 에지로 배치되기를 원합니다.

다음 코드는 훌륭하게 렌더링되지만, subgraph coresubgraph cluster_core으로 변환하면 조금 흐리게 처리됩니다. 갑자기 core이 왼쪽으로 이동하고 노드가 세로로 배열됩니다 (노드의 경우 rankdirrank=same으로 무시됨). -하지만 바깥 쪽 테두리와 레이블을 정말 원합니다! 내가 여기서 뭔가를 놓치고 있니? 의자와 컴퓨터 사이에 문제가 있습니까?

내가 지금까지 가지고있는 코드는 다음과 같습니다 당신은 cluster_core에서 그룹 노드가 {}를 사용합니다

digraph network { 
    graph [overlap = false] 

    // Node definitions 
    subgraph core { 
    rank = same 
    labelloc = c 
    label = "Core" 

    node [shape=square] 
     SR_CORE DR_CORE 

    node [shape=plaintext] 
     ROUTE2 ROUTE1 

    } 

    subgraph cluster_hypervisors { 
    rank = same 
    labelloc = c 
    style = filled 
    label = "Hypervisors" 

    node [shape=circle style=filled fillcolor=white] 
     NODE01 NODE02 NODE03 NODE04 
    } 

    subgraph cluster_edge { 
    rank = same 
    labelloc = c 
    label = "Edge" 

    node [shape=rectangle] 
     SWITCH01 SWITCH02 SWITCH03 
    } 

    // Edge definitions 
    SR_CORE -> ROUTE2 -> DR_CORE [dir=none] 
    SR_CORE -> ROUTE1 -> DR_CORE [dir=none] 

    SR_CORE -> { SWITCH01 SWITCH02 } 
    DR_CORE -> { SWITCH03 } 

    NODE01 -> SR_CORE [dir=back] 
    NODE02 -> SR_CORE [dir=back] 
    NODE03 -> DR_CORE [dir=back] 
    NODE04 -> DR_CORE [dir=back] 

} 

답변

1

. 모양을 조정하려면 당신은 또한 몇 가장자리에 약간의 constraint=false를 추가 할 수 있습니다

digraph network { 
    graph [overlap = false] 

    // Node definitions 
    subgraph cluster_core { 
    rank = same 
    labelloc = c 
    label = "Core" 

    node [shape=square] 
     SR_CORE DR_CORE 

    node [shape=plaintext] 
     ROUTE2 ROUTE1 

    {SR_CORE DR_CORE ROUTE2 ROUTE1} 
    } 

    subgraph cluster_hypervisors { 
    rank = same 
    labelloc = c 
    style = filled 
    label = "Hypervisors" 

    node [shape=circle style=filled fillcolor=white] 
     NODE01 NODE02 NODE03 NODE04 
    } 

    subgraph cluster_edge { 
    rank = same 
    labelloc = c 
    label = "Edge" 

    node [shape=rectangle] 
     SWITCH01 SWITCH02 SWITCH03 
    } 

    // Edge definitions 
    SR_CORE -> ROUTE2 [dir=none] 
    SR_CORE -> ROUTE1 [dir=none, constraint=false] 
    ROUTE2 -> DR_CORE [dir=none, constraint=false] 
    ROUTE1 -> DR_CORE [dir=none, constraint=false] 

    SR_CORE -> { SWITCH01 SWITCH02 } 
    DR_CORE -> { SWITCH03 } 

    NODE01 -> SR_CORE [dir=back] 
    NODE02 -> SR_CORE [dir=back] 
    NODE03 -> DR_CORE [dir=back] 
    NODE04 -> DR_CORE [dir=back] 
} 

enter image description here

당신은 회신 지연 죄송합니다 http://graphviz.it/#/mRSLblIF

+0

작업 예제를 확인하실 수 있습니다, 그래서 통지의 수신을 중지하는 것 내 이메일로 보내고 잠시 동안 로그온하지 않았습니다. 도움을 주셔서 감사합니다, 나는 그것을 놓쳤다는 것을 몰랐습니다! 나는 이제 가장자리 구속 조건에서도 힘을 봅니다! – absolutejam