2017-06-22 1 views
2

J'ai récemment commencé à utiliser la bibliothèque networkx en python pour générer et visualiser des graphes. Je commencé par un simple code (comprenant 4 nœuds) comme indiquéTracer le graphe Networkx en Python

import networkx as nx 
import matplotlib.pyplot as plt 
G = nx.Graph() 
G.add_edges_from([(1 ,2) , (2 ,3) , (1 ,3) , (1 ,4) ]) 
nx.draw(G) 
plt.show() 

Quand je lance le code pour deux fois consécutives, les sorties de même code est tel que représenté dans les images (l'orientation de la trame est aléatoire)

image 1image 2

Est-il possible de générer la sortie des parcelles avec l'orientation même/fixe?

Répondre

3

Par défaut, une disposition de ressort est utilisée pour dessiner le graphique. Cela peut avoir une nouvelle orientation chaque fois qu'il est dessiné.

D'autres dispositions sont également disponibles.

enter image description here

En utilisant par exemple nx.draw_circular ou nx.draw_spectral vous donnera toujours la même mise en page.

Vous pouvez également définir les positions des nœuds à l'aide d'un dictionnaire qui mappe nodenumber sur une position.

import networkx as nx 
import matplotlib.pyplot as plt 
G = nx.Graph() 
G.add_edges_from([(1 ,2) , (2 ,3) , (1 ,3) , (1 ,4) ]) 
pos = { 1: (20, 30), 2: (40, 30), 3: (30, 10),4: (0, 40)} 

nx.draw_networkx(G, pos=pos) 

plt.show() 

enter image description here

+0

Merci! La méthode des positions de codage dur est très utile. –