2013-08-02 69 views
6

Tôi muốn vẽ một mạng vuông với Networkx. Tôi đã làm một cái gì đó như thế này:Vẽ lưới và đồ thị bằng 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() 

Tuy nhiên đầu ra chỉ là một hình trống. Làm cách nào để giải quyết vấn đề này?

Ngoài ra, tôi muốn tham gia các điểm theo chiều ngang và chiều dọc với các mũi tên. Hướng của các mũi tên đi từ (i,j) to (i+1,j) phụ thuộc vào dấu của phần tử i, j của ma trận A mà tôi đã có. làm như thế nào?

Trả lời

8

Những là một nhà xây dựng đồ thị rõ ràng cho nx.grid_2d_graph này:

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

enter image description here

Chúng tôi có thể thay đổi đồ thị vô hướng này thành một đồ thị có hướng phù hợp với tiêu chí cạnh bạn. Ví dụ, tôi đã loại bỏ các cạnh chỉ ra khỏi nguồn gốc. Bạn có thể thích ứng này để phù hợp với nhu cầu của bạn:

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

Các vấn đề liên quan