我有一个名为G1的DiGraph对象,一个带有边的图网络。G1由一个节点列表组成,我想给它们存储在python字典中的坐标。
这是节点列表:节点列表
对于每个节点,我都用节点名作为键,用坐标元组作为值构建了一个python字典:
DICTIONARY WITH COORDINATES
我想为每个具有这些坐标的节点添加属性位置(pos)。
现在我试着用这个循环:
FOR循环添加坐标
但是结果只有最后一个节点看起来有坐标,看起来数据是用这个方法订阅的:
误差
结果应该是在xy空间上绘制的图形网络,并使用代码获得正确的坐标:绘制图表我得到以下错误:
KeyError: (78.44, 88.3)
我认为这里主要是语法错误。试试这个:
for node, pos in avg.items():
G1.nodes[node]['pos'] = pos
然后,在构建可视化时,预先像这样构建位置列表,并且在调用nx.draw()
时仅使用pos=pos
约定。
pos = {node: G.nodes[node]['pos'] for node in G.nodes()}
* * * *编辑:* * * *
有一个内置的方法可以做到这一点,更干净:
nx.set_node_attributes(G1, avg, 'pos')
然后,在绘图时,使用:
nx.draw(G1, pos=nx.get_nodes_attributes(G1, 'pos'))