2013-08-02 2 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), должно зависеть от знака элемента i, j матрицы A, который у меня уже есть. Как это сделать?

ответ

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

Смежные вопросы