2016-06-30 5 views
0

В 2D-графике с 10x10 узлов, я понял, что я хочу, узлы должны быть помечены, начиная с верхнего левого угла, вниз и столбцам:Python: отражают позиции в 2D сетки графика

1st column -> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
2nd column -> [10, 11, 12, 13, 14, 15, 16, 17, 18, 19] 

и и так далее, пока я не дойду до 10-й колонки. Вместо этого код, который у меня есть, обозначает их, начиная с нижнего левого угла, вверх и по столбцу. Я предполагаю, что оговорка находится в строке pos2, но я не знаю, как ее изменить. Я пробовал reverse списки inds и vals, но результат был отражением графика относительно y или вертикальной оси. Вместо этого я ищу отражение относительно горизонтальной оси.

import networkx as nx 
from pylab import * 
import matplotlib.pyplot as plt 
%pylab inline 

#n=100 Number of nodes 
ncols=10 #Number of columns in a 10x10 grid of positions 

N=10 #Nodes per side 
G=nx.grid_2d_graph(N,N) 
labels = dict(((i,j), i + (N-1-j) * N) for i, j in G.nodes()) 
nx.relabel_nodes(G,labels,False) 
inds=labels.keys() 
vals=labels.values() 
inds=sorted(inds,reverse=False) 
vals=sorted(vals, reverse=False) 
pos2=dict(zip(vals,inds)) 
nx.draw_networkx(G, pos=pos2, with_labels=True, node_size = 250, node_color='lightblue') 
plt.axis('off') 
plt.show() 

enter image description here

ответ

1

Вы можете просто изменить ярлыки, когда вы рисуете график как этот

import networkx as nx                               
import matplotlib.pyplot as plt             

#n=100 Number of nodes               
ncols=10 #Number of columns in a 10x10 grid of positions       

N=10 #Nodes per side                
G=nx.grid_2d_graph(N,N)               
pos = dict(zip(G.nodes(),G.nodes()))            
ordering = [(y,N-1-x) for y in range(N) for x in range(N)]      
labels = dict(zip(ordering, range(len(ordering))))        
nx.draw_networkx(G, pos=pos, with_labels=False, node_size = 250, node_color='lightblue')                  
nx.draw_networkx_labels(G, pos=pos, labels=labels)        
plt.axis('off')                 
plt.show() 
1

Следующие работал для меня: удалить строку vals=sorted(vals, reverse=False) и замените строку inds=sorted(inds,reverse=False) с inds=[(N-j-1,N-i-1) for i,j in inds] , enter image description here

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