2013-01-11 14 views
16

Tracciare un grafico cricca conCome aumentare la spaziatura nodo per networkx.spring_layout

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

produce il seguente quadro:

enter image description here

Ovviamente, la distanza tra i nodi (ad esempio, il bordo lunghezza) deve essere aumentato. Googled questo ed ho trovato this suggestion qui:

Per alcuni degli algoritmi di layout c'è un parametro "scale" che potrebbe aiutare. per esempio.

In 1: import NetworkX come nx

In 2: G = nx.path_graph (4)

In [3]: pos = nx.spring_layout (G) #default in scala = 1

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

In [5]: pos = nx.spring_layout (G, scale = 2) # doppia distanza tra tutti i nodi

In [6]: nx.draw (G, pos)

Tuttavia, il parametro scale non sembra avere alcun effetto.

Qual è il metodo giusto per ottenere un disegno migliore?

+0

Oltre alla risposta fornita di seguito, ho anche riscontrato che l'aumento delle dimensioni della figura aiuta. – ericmjl

risposta

22

OK, la mia risposta è troppo tardi per questa domanda. Ma la soluzione a questo problema risiede nella versione di NetworkX 1.8 che deve ancora essere rilasciata, ma è disponibile tramite git hub.

fare quanto segue per aumentare la distanza tra i nodi:

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 con questi parametri per vedere come funziona. Ma nonostante ciò non vi è alcuna garanzia che tutti i nodi non siano sovrapposti

Problemi correlati