2016-12-20 15 views
2

저는 자동 생성 Graphviz에서 작업하고 있습니다. (따라서이 일반적인 예제가 아닌 일반 솔루션이어야합니다). 그것은 네트워크의 토폴로지를 그립니다. 그러나 클러스터 내부의 결과는 정리되지 않습니다. 여기 Graphviz : 클러스터의 노드 순서 지정

enter image description here

가 associed 코드 : 여기

는 토폴로지 내가 FDP를 사용하고

digraph G { 

splines=polyline; 

subgraph cluster_sh5sl8 { 
    style=filled; 
    color=lightgrey; 
    node [style=filled,color=white]; 
    sh5sl8_L1 [label = "L1"]; 
    label = "5/8"; 
} 
subgraph cluster_sh5sl10 { 
    style=filled; 
    color=lightgrey; 
    node [style=filled,color=white]; 
    sh5sl10_L1 [label = "L1"]; 
    label = "5/10"; 
} 
subgraph cluster_sh5sl12 { 
    style=filled; 
    color=lightgrey; 
    node [style=filled,color=white]; 
    sh5sl12_L1 [label = "L1"]; 
    label = "5/12"; 
} 
subgraph cluster_sh5sl14 { 
    style=filled; 
    color=lightgrey; 
    node [style=filled,color=white]; 
    sh5sl14_L1 [label = "L1"]; 
    label = "5/14"; 
} 
subgraph cluster_sh5sl16 { 
    style=filled; 
    color=lightgrey; 
    node [style=filled,color=white]; 
    sh5sl16_L1 [label = "L1"]; 
    label = "5/16"; 
} 
subgraph cluster_sh6sl3 { 
    style=filled; 
    color=lightgrey; 
    node [style=filled,color=white]; 
    sh6sl3_L1 [label = "L1"]; 
    label = "6/3"; 
} 
subgraph cluster_sh6sl8 { 
    style=filled; 
    color=lightgrey; 
    node [style=filled,color=white]; 
    sh6sl8_L1 [label = "L1"]; 
    label = "6/8"; 
} 
subgraph cluster_sh6sl10 { 
    style=filled; 
    color=lightgrey; 
    node [style=filled,color=white]; 
    sh6sl10_L1 [label = "L1"]; 
    label = "6/10"; 
} 
subgraph cluster_sh6sl12 { 
    style=filled; 
    color=lightgrey; 
    node [style=filled,color=white]; 
    sh6sl12_L1 [label = "L1"]; 
    label = "6/12"; 
} 
subgraph cluster_sh6sl14 { 
    style=filled; 
    color=lightgrey; 
    node [style=filled,color=white]; 
    sh6sl14_L1 [label = "L1"]; 
    label = "6/14"; 
} 
subgraph cluster_sh6sl16 { 
    style=filled; 
    color=lightgrey; 
    node [style=filled,color=white]; 
    sh6sl16_L1 [label = "L1"]; 
    label = "6/16"; 
} 
subgraph cluster_sh30sl1 { 
    rank=same; 
    style=filled; 
    color=lightgrey; 
    node [style=filled,color=white]; 
    sh30sl1_9600 [label = "9600"]; sh30sl1_9590 [label = "9590"]; sh30sl1_9580 [label = "9580"]; sh30sl1_9570 [label = "9570"]; sh30sl1_9560 [label = "9560"]; sh30sl1_9280 [label = "9280"]; sh30sl1_9270 [label = "9270"]; sh30sl1_9260 [label = "9260"]; sh30sl1_9250 [label = "9250"]; sh30sl1_9220 [label = "9220"]; sh30sl1_9190 [label = "9190"]; sh30sl1_OMD [label = "OMD"]; 
    label = "30/1"; 
} 

sh30sl1_9570 -> sh5sl8_L1; 
sh30sl1_9560 -> sh5sl10_L1; 
sh30sl1_9280 -> sh5sl12_L1; 
sh30sl1_9270 -> sh5sl14_L1; 
sh30sl1_9260 -> sh5sl16_L1; 
sh30sl1_9220 -> sh6sl3_L1; 
sh30sl1_9250 -> sh6sl8_L1; 
sh30sl1_9190 -> sh6sl10_L1; 
sh30sl1_9600 -> sh6sl12_L1; 
sh30sl1_9590 -> sh6sl14_L1; 
sh30sl1_9580 -> sh6sl16_L1; 
sh6sl12_L1 -> sh30sl1_9600; 
sh6sl14_L1 -> sh30sl1_9590; 
sh6sl16_L1 -> sh30sl1_9580; 
sh5sl8_L1 -> sh30sl1_9570; 
sh5sl10_L1 -> sh30sl1_9560; 
sh5sl12_L1 -> sh30sl1_9280; 
sh5sl14_L1 -> sh30sl1_9270; 
sh5sl16_L1 -> sh30sl1_9260; 
sh6sl8_L1 -> sh30sl1_9250; 
sh6sl3_L1 -> sh30sl1_9220; 
} 

참고 만 작동하는지 내가 무엇을 사용할 수 있습니다. 현재 FDP는 최고의 결과를 제공합니다.

어떻게 주문할 수 있습니까?

나는 이미 clusterrank, ranksep, nodesep, constraint=false으로 시도했거나 다른 순서로 호출했다. 나는 un univible 노드를 만들고 동등하게 만들기 위해 클러스터 내의 모든 다른 노드를 연결하려고 시도했지만 작동하지 않았다.

답변

1

난은 GraphVIZ 자신을 파일을 수정할 수있는 나는 아직 내가 비슷한 문제가 결과 - 생성과 함께 일하는 것이 대답을하지 않습니다

로 렌더링됩니다

<graphviz> 
    digraph hierachy { 
    rankdir="LR" 
    graph [ordering="out"]; 
    subgraph cluster_Hierachie { 
     label="Hierachie" 
     n0 
     n10000 
     n20000 
     n30000 
     n40000 
     n50000 
     n0->n10000 
     n0->n20000 
     n0->n30000 
     n0->n40000 
     n0->n50000 
    } 
    } 
</graphviz> 

로 :

지정하는 방법에 대한 다른 제안을 유의하시기 바랍니다 "주문 = OUT"

digraph g { 
    ordering=out ; 

또는 https://stackoverflow.com/a/9169194/1497139 1 upvote에와 https://stackoverflow.com/a/9168680/1497139을 가지고 있지만 나를 위해이 작품의

digraph bt { 
    graph [ordering="out"]; 

없음을 2 upvotes가있다

http://www.graphviz.org/content/ordering-edges

rank=same 

를 사용하는 제안 그래서 나는 시도 :로 렌더링

<graphviz> 
    digraph hierachy { 
    rankdir="LR" 
    graph [ordering="out"]; 

    subgraph cluster_Hierachie { 
     label="Hierachie" 
     n0 
     n10000 
     n20000 
     n30000 
     n40000 
     n50000 
     n0->n10000 
     n0->n20000 
     n0->n30000 
     n0->n40000 
     n0->n50000 
     { 
     rank=same;n0;n10000;n20000;n30000;n40000;n50000 
     } 
    } 

    } 
</graphviz> 

: enter image description here

http://www.graphviz.org/content/cluster-changes-nodes-order

추가 제안

style=invis 
{ rank=same 0 -- 1 [style=invis] 
} 

노드.나는 아무 소용이 시도하고 렌더링

<graphviz> 
    digraph hierachy { 
    rankdir="LR" 
    graph [ordering="out"]; 

    subgraph cluster_Hierachie { 
     label="Hierachie" 
     n0 
     n10000 
     n20000 
     n30000 
     n40000 
     n50000 
     n0->n50000 
     n0->n40000 
     n0->n30000 
     n0->n20000 
     n0->n10000 
    } 
    } 
</graphviz> 

하고 결국 : 내가 클러스터의 역 순서의 이상한 행동 주어진 올바른 해결 방법이라고 생각하는 enter image description here

합니다.

+0

자세한 답변을 보내 주셔서 감사합니다. 내 문제는 subgraph-cluster to subgraph-cluster에 관한 것이었다. 그래서 그래프를 노드별로 클러스터를 나타내도록 변경 한 다음 svg 파일을 편집하여 노드를 동적으로 만듭니다. 그것을 클릭함으로써, 부분 그래프를 디스플레이하십시오. 하지만 관심을 가져 주셔서 감사합니다. – Sail