2013-08-02 19 views
6

Ich möchte ein quadratisches Gitter mit Networkx zeichnen. Ich habe etwas wie folgt gemacht:Zeichnen von Gittern und Graphen mit Networkx

import matplotlib.pyplot as plt 
import numpy as np 
import networkx as nx 
L=4 

G = nx.Graph() 

pos={} 
for i in np.arange(L*L): 
    pos[i] = (i/L,i%L) 

nx.draw_networkx_nodes(G,pos,node_size=50,node_color='k')  

plt.show() 

Allerdings ist die Ausgabe nur eine leere Zahl. Wie kann ich das beheben?

Auch möchte ich die Punkte horizontal und vertikal mit Pfeilen verbinden. Die Richtung der Pfeile, die von (i,j) to (i+1,j) gehen, sollte vom Vorzeichen des i, j Elements einer Matrix A abhängen, die ich bereits habe. Wie macht man das?

Antwort

8

Dies ist eine explizite Graph Konstruktor für diese nx.grid_2d_graph:

G = nx.grid_2d_graph(L,L) 
nx.draw(G,node_size=2000) 
plt.show() 

enter image description here

Wir haben dieses ungerichteten Graphen in einen gerichteten Graphen ändern können, die Ihre Kanten Kriterien entspricht. Als ein Beispiel habe ich Kanten entfernt, die vom Ursprung weg zeigen. Sie können diese an Ihre Bedürfnisse anpassen:

G2 = nx.DiGraph(G) 
for edge in G2.edges(): 
    if edge != tuple(sorted(edge)): 
     G2.remove_edge(*edge) 

nx.draw_spectral(G2,node_size=600,node_color='w') 

enter image description here

Verwandte Themen