В 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()