2013-01-11 26 views
16

Rysunek klika wykres zJak zwiększyć odstępy węzła dla networkx.spring_layout

import networkx as nx 
.... 
nx.draw(G, layout=nx.spring_layout(G)) 

wytwarza się następujący obraz:

enter image description here

Oczywiście, odstęp między węzłami (np krawędź długość) musi zostać zwiększona. Ja googled to i znalezione this suggestion tutaj:

Dla niektórych algorytmów układ jest „skala” parametrem, który może pomóc. na przykład

W 1: NetworkX importu jak nx

W 2 G = nx.path_graph (4)

W [3]: poz = nx.spring_layout (G) #default skali = 1

w [4]: ​​nx.draw (G pos)

w [5]: poz = nx.spring_layout (G skali = 2) # podwójnej odległości między wszystkimi węzłami

W [6]: nx.draw (G, poz)

Jednak parametr scale wydaje się nie mieć żadnego efektu.

Jaka jest właściwa metoda uzyskania lepszego rysunku?

+0

Oprócz odpowiedzi podanej poniżej, stwierdziłem również, że zwiększenie rozmiaru figury pomaga. – ericmjl

Odpowiedz

22

Dobra, moja odpowiedź jest za późno na to pytanie. Ale rozwiązanie tego problemu leży w wersji 1.8 sieci NetworkX, która nie została jeszcze wydana, ale jest dostępna przez hub git.

Wykonaj następujące czynności w celu zwiększenia odległości między węzłami:

pos = nx.spring_layout(G,k=0.15,iterations=20) 
    # k controls the distance between the nodes and varies between 0 and 1 
    # iterations is the number of times simulated annealing is run 
    # default k =0.1 and iterations=50 

Tweak z tych parametrów, aby zobaczyć jak to działa. Ale mimo to nie ma gwarancji, że wszystkie węzły nie zachodzą na siebie