Networkx:如何更改节点索引

法式咖啡

我正在使用常规的100x100=10000节点网络。网络是这样创建的:

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什么?

詹姆斯·托宾

我假设您正在按照以下示例进行操作:使用grid_2d_graph在networkx中绘制MxM节点的正方形网格时,删除旋转效果

话虽如此,如果您像他们那样做的话,您的照片就会看起来像他们的照片。如果您只想让'pos'看起来不同,则可以使用:

inds = labels.keys()
vals = labels.values()
inds.sort()
vals.sort()
pos2 = dict(zip(vals,inds))

In [42]: pos2[0]
Out[42]: (0, 0)

In [43]: pos2[99]
Out[43]: (0, 99)

In [44]: pos2[9900]
Out[44]: (99, 0)

In [45]: pos2[9999]
Out[45]: (99, 99)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章