gpt4 book ai didi

python - 使用 NetworkX 向节点添加多级属性

转载 作者:行者123 更新时间:2023-11-28 21:59:44 24 4
gpt4 key购买 nike

我正在尝试导出具有某些可视化规范的图形文件。我不知道如何添加多级属性。

Import networkx as nx
#Create the Graph
g = nx.Graph()
g.add_edge('Andre', 'Beverly')
g.add_edge('Andre', 'Diane')
g.add_edge('Andre', 'Carol')
g.add_edge('Andre', 'Fernando')
g.add_edge('Beverly', 'Diane')
nx.draw(g)

给节点添加属性

我想做的是添加位置但使用特定属性(名称和结构)

# compute position 
pos = nx.spring_layout(g)

# add attribute
g.node["Andre"]["viz"]["position"]["x"]= pos["Andre"][0]
g.node["Andre"]["viz"]["position"]["y"]= pos["Andre"][1]

这行不通

我其实有两个问题:

  1. 如何添加多级属性
  2. 有没有办法在迭代中做到这一点(我仍然可以编写一个函数,但我想知道是否有一种方法可以从 networkx 中做到这一点,但我还没有见过)

信息:我真正想要的是一种将网络图导出到 gexf 文件的方法,我可以用 gexf-js 打开该文件不路过gephi.

附言:我有this question 和其他与此相关的,但据我所知,他们没有解决我所追求的问题。

最佳答案

spring_layout() 中计算位置后:

for node in g.nodes():
g.node[node]["viz"] = {'position': {'x': pos[node][0],
'y': pos[node][1]
}
}

print g.nodes(data=True)

结果:

[('Beverly',
{'viz': {'position': {'x': 0.00089466691490215525,
'y': 0.69872879243427066}}}),
('Andre',
{'viz': {'position': {'x': 0.55837798068966304, 'y': 0.47862178288009244}}}),
('Carol', {'viz': {'position': {'x': 1.0, 'y': 0.95632397309056527}}}),
('Diane', {'viz': {'position': {'x': 0.0, 'y': 0.25644757276893704}}}),
('Fernando', {'viz': {'position': {'x': 0.9957995595107102, 'y': 0.0}}})]

然后你可以让 nx.write_gexf(g, 'somefile.gexf') 工作:-)

关于python - 使用 NetworkX 向节点添加多级属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16103588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com