2013-08-02 17 views
6

Chcę narysować kwadratową kratę z Networkx. Zrobiłem coś takiego:Rysowanie sieci i wykresów za pomocą 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() 

Jednak wynik jest po prostu pusty. Jak rozwiązać ten problem?

Chciałbym również dołączyć punkty w poziomie i w pionie za pomocą strzałek. Kierunek strzałek od (i,j) to (i+1,j) powinien zależeć od znaku elementu i, j macierzy A, którą już posiadam. Jak to zrobić?

Odpowiedz

8

Są to wyraźne konstruktor wykres dla tego nx.grid_2d_graph:

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

enter image description here

Możemy zmodyfikować ten nieukierunkowane wykres w reżyserii wykresie, który pasuje do Twoich kryteriów brzegowych. Jako przykład usunąłem krawędzie, które wskazują od początku. Można dostosować to do swoich potrzeb:

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

Powiązane problemy