我无法计算简单的NetworkX加权图的中心位置 这是正常的还是我做错了什么?
我用简单的add_edge(c[0],c[1],weight = my_values)
添加边缘,其中
c[0],c[1]
是for循环中的字符串(节点名称)和my_values
整数。这是结果边的一个例子:
('first node label', 'second node label', {'weight': 14})
(节点的数量并不重要 - 现在我只保留20个)
我的图表的边缘列表是一个元组列表,带有(string_node1,string_node2,weight_dictionary) - 一切看起来都很好,因为我也可以绘制/保存/读取/图形...
为什么:
nx.degree_centrality
给了我所有的1个?nx.closeness_centrality
给了我所有的1个?示例:
{'first node name': 1.0,
...
'last node name': 1.0}
感谢您的帮助。
答案 0 :(得分:1)
很简单:
而不是使用我使用的nx.degree_centrality()
my_graph.degree(weight='weight')
- 我仍然认为这是模块中的基本缺失......
...但是,nx.closeness_centrality
答案 1 :(得分:0)
要使closeness_centrality
考虑权重,必须按照this issue的建议在图形边缘添加distance
的{{1}}属性。
此处是执行此操作的代码(图形为1 / weight
):
g
答案 2 :(得分:0)
我知道这是一个非常老的问题,但是只是想指出,您的学位中心度值全为1的原因可能是因为您的图是完整的(即,所有节点都连接到每个其他节点),并且中心度是指图中节点所连接的节点的比例。
节点v的度中心是它所连接的节点的分数。
通过在简单图n-1中除以最大可能度来归一化度中心值,其中n是G中的节点数。