Я работаю с обычной сетью узлов 100x100=10000
. Сеть создается так же, как это:Networkx: Как изменить индексирование узлов
import networkx as nx
import matplotlib.pyplot as plt
N=100
G=nx.grid_2d_graph(N,N) #2D regular graph of 10000 nodes
pos = dict((n, n) for n in G.nodes()) #Dict of positions
labels = dict(((i, j), i + (N-1-j) * N) for i, j in G.nodes())
nx.relabel_nodes(G,labels,False)
pos = {y:x for x,y in labels.iteritems()} #An attempt to change node indexing
Я хочу иметь node 0
в верхнем левом углу, и узел 9999
в нижнем правом углу. Вот почему вы видите второй вызов pos
: это попытка изменить индексирование узлов в соответствии с моей волей.
Однако, я заметил, что после того, как я запускаю скрипт: pos[0]=(0,99)
, pos[99]=(99,99)
, pos[9900]=(0,0)
, pos[9999]=(99,0)
. Это означает, что networkx
видит начало сетки в левом нижнем углу и что самое дальнее положение от начала координат, (99,99)
, относится к 99-му узлу.
Теперь я хочу изменить это, чтобы иметь начало в левом верхнем углу. Это означает, что я хочу иметь: pos[0]=(0,0)
, pos[99]=(0,99)
, pos[9900]=(99,0)
, pos[9999]=(99,99)
.
Что следует изменить в pos
?
Это работает! Но если вы можете взглянуть на этот вопрос (http://stackoverflow.com/questions/33826967/matplotlib-how-to-mirror-an-image-with-respect-to-both-axes), вы увидите мой в целом проблема. Применяя ваш намек, я достигаю ситуации, когда мне нужно дополнительно отразить результат, на этот раз относительно оси y. Это означает, что я вижу свой исход * вверх ногами *. Я надеюсь, что образный образ в вопросе поможет вам понять. – FaCoffee