我正在使用常规的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] 删除。
我来说两句