networkx加权图

时间:2017-01-28 16:24:06

标签: networkx weighted-graph

我无法计算简单的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}

感谢您的帮助。

3 个答案:

答案 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的原因可能是因为您的图是完整的(即,所有节点都连接到每个其他节点),并且中心度是指图中节点所连接的节点的比例。

networkx's documentation

  

节点v的度中心是它所连接的节点的分数。

     

通过在简单图n-1中除以最大可能度来归一化度中心值,其中n是G中的节点数。