2013-01-11 17 views
16

Zeichnen einer Clique Graph mitWie Knotenabstand für networkx.spring_layout

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

ergibt folgendes Bild zu erhöhen:

enter image description here

Offensichtlich ist der Abstand zwischen den Knoten (zB die Kante Länge) muss erhöht werden. Ich habe diese gegoogelt und gefunden this suggestion hier:

Für einige der Layout-Algorithmen gibt es eine „Skala“ Parameter, dass helfen könnte. z.B.

In 1: import NetworkX als nx

In 2: G = nx.path_graph (4)

In [3]: po = nx.spring_layout (G) #default maßstab = 1

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

in [5]: po = nx.spring_layout (G, scale = 2) # doppelten Abstand zwischen allen Knoten

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

jedoch die scale Parameter scheinen keine Wirkung zu haben.

Was ist die richtige Methode, um eine bessere Zeichnung zu erhalten?

+0

Abgesehen von der Antwort, die unten zur Verfügung gestellt wird, habe ich auch gefunden, dass das Erhöhen der Zahlgröße hilft. – ericmjl

Antwort

22

In Ordnung, meine Antwort ist zu spät für diese Frage. Die Lösung dieses Problems liegt jedoch in der NetworkX-Version 1.8, die noch nicht veröffentlicht wurde, aber über Git Hub verfügbar ist.

bauen Sie die Entfernung zwischen den Knoten zu erhöhen:

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 mit diesen Parametern zu sehen, wie es funktioniert. Aber trotzdem gibt es keine Garantie, dass alle Knoten sich nicht überlappen