2016-12-20 6 views
2

Я работаю над автоматически сгенерированным Graphviz (поэтому это должно быть общее решение, а не для этого конкретного примера). Он рисует топологию сети. но результаты внутри кластера не выглядят организованными.Graphviz: Узел упорядочения в кластере

Вот топология:

enter image description here

Вот associed код:

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, но я могу использовать что-нибудь другое, если он работает. В настоящее время FDP дает мне лучшие результаты.

Как это сделать?

Я уже пробовал с clusterrank, ranksep, nodesep, constraint=false или звонил им в другом порядке и т. Д. Я попытался создать неживой узел и связать все остальные узлы внутри кластера, чтобы сделать их равноудаленными, но это не сработало.

ответ

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> 

которая предоставляется как: enter image description here

и до сих пор найдены следующие ссылки:

пожалуйста обратите внимание на различные предложения о том, как задать "упорядоченность = из"

digraph g { 
    ordering=out ; 

или

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

ни один из них не работает для меня, хотя https://stackoverflow.com/a/9169194/1497139 получил 1 upvote и https://stackoverflow.com/a/9168680/1497139 имеет 2 оборота

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

Большое спасибо за подробный ответ. Моя проблема была больше связана с подграфом-кластером с подграфом-кластером. Итак, я изменил график так, чтобы представить кластер узлом, а затем отредактировать файл svg, чтобы сделать динамический узел. Нажав на нее, отобразите подграф. Но большое вам спасибо за внимание! – Sail

 Смежные вопросы

  • Нет связанных вопросов^_^