2013-08-02 104 views
6

我想用Networkx繪製正方形格子。我做了這樣的事情:使用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() 

但是,輸出只是一個空白圖。我該如何解決這個問題?

另外,我想用箭頭水平和垂直地連接點。從(i,j) to (i+1,j)開始的箭頭的方向應取決於我已有的矩陣A的i,j元素的符號。這個怎麼做?

回答

8

這是該nx.grid_2d_graph明確的圖形構造:

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

enter image description here

我們可以通過修改本無向圖到有向圖適合你的優勢條件。舉個例子,我刪除了指向原點的邊。你能適應這種滿足您的需求:

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