Python 如何更改networkx图形中的节点位置? 我想根据值的字典更改networkx.DiGraph中的节点位置。 我的尝试:
1) 首先,我生成一个字典,其中Python 如何更改networkx图形中的节点位置? 我想根据值的字典更改networkx.DiGraph中的节点位置。 我的尝试:,python,matplotlib,graph,networkx,graph-algorithm,Python,Matplotlib,Graph,Networkx,Graph Algorithm,1) 首先,我生成一个字典,其中键作为节点名称,值作为X和Y坐标的元组,这是我的结果: {'Start': (2, 2), 'S0': (0, 0), 'S1': (1, 0), 'S2': (2, 0), 'S3': (3, 0), 'S4': (4, 0), 'S5': (5, 0), 'S6': (6, 0), 'S7': (7, 0), 'S8': (8, 0), 'S9': (9, 0), 'S10': (10, 0), 'S11': (11, 0), 'S12': (12, 0),
键
作为节点
名称,值
作为X
和Y
坐标的元组
,这是我的结果:
{'Start': (2, 2), 'S0': (0, 0), 'S1': (1, 0), 'S2': (2, 0), 'S3': (3, 0), 'S4': (4, 0), 'S5': (5, 0), 'S6': (6, 0), 'S7': (7, 0), 'S8': (8, 0), 'S9': (9, 0), 'S10': (10, 0), 'S11': (11, 0), 'S12': (12, 0), 'S13': (13, 0), 'S14': (14, 0), 'S15': (15, 0), 'S16': (16, 0), 'S17': (17, 0), 'S18': (18, 0), 'S19': (19, 0), 'S20': (20, 0), 'S21': (21, 0), 'S22': (22, 0), 'S23': (23, 0), 'S24': (24, 1), 'S25': (25, 1), 'S26': (26, 2), 'S27': (27, 2), 'S28': (28, 2), 'S29': (29, 3), 'S30': (30, 3), 'S31': (31, 3), 'S32': (32, 3), 'S33': (33, 3), 'S34': (34, 3), 'S35': (35, 3), 'S36': (36, 3), 'S37': (37, 3), 'S38': (38, 3), 'S39': (39, 3), 'S40': (40, 3), 'S41': (41, 3), 'S43': (43, 3), 'S44': (44, 3), 'S45': (45, 3), 'S47': (47, 3), 'S48': (48, 3), 'S49': (49, 3), 'S50': (50, 3), 'S51': (51, 3), 'S42': (42, 3), 'S46': (46, 3), 'Finish': (2, 2)}
2) 然后我从列表中生成节点
,并使用G.add_Nodes_from(Nodes)
(下面是节点
列表):
3) 最后但并非最不重要的一点是,我生成了边(数据太大,无法放在这里)
4) 然后我把所有这些都放在一起:
5) 当我绘制图表时,我得到的是:
nx.draw_shell(G, with_labels = True, node_size = 500)
有什么问题吗?
节点的属性时:pos=nx.get\u node\u attributes(G,'pos')
。我能在正确的位置看到我所有的位置
节点
编辑:
- 将命令从
更改为nx.draw\u shell
似乎没有帮助nx.draw
pos
参数将位置字典(键是节点,值是二维坐标)传递给更通用的draw\u networkx
函数:
nx.draw_networkx(G,pos= positions,with_labels=True,node_color=node_color,node_size=500)
请注意,
nx.draw\u shell
将根据shell布局算法来布局您的网络。答案太好了!工作就像一种魅力。
nx.draw_shell(G, with_labels = True, node_size = 500)
nx.draw_networkx(G,pos= positions,with_labels=True,node_color=node_color,node_size=500)