Python Networkx-根据不同的中心度度量为节点着色

时间:2019-08-25 12:38:42

标签: python networkx

我想绘制一个网络,其中每个节点都根据该节点的中心性进行着色。

我是python的新手,到目前为止,我拥有我的网络和每个节点的中心值字典。例如:根据一些连续的色谱图,高度集中的区域将被涂成深色,而低度浓度的区域将被涂成浅色。

到目前为止,我有

sw0 = nx.watts_strogatz_graph(300,3,0.05)
dcent = nx.degree_centrality(sw1)
ecent = nx.degree_centrality(sw1)
bcent = nx.betweenness_centrality(sw1)
ccent = nx.closeness_centrality(sw1)

plt.figure(1)
nx.draw(sw0,pos=None,with_labels=False,node_size=5,width=0.05)
plt.savefig("sw0.png",dpi=500)

感谢您提供任何帮助,包括进一步研究的链接。 谢谢。

1 个答案:

答案 0 :(得分:0)

您需要将颜色值列表传递给nx.draw方法。 最简单的形式是将dict值转换为列表:

import networkx as nx
import matplotlib.pyplot as plt

sw0 = nx.watts_strogatz_graph(300,3,0.05)
dcent = nx.degree_centrality(sw0)
dcent_color = [dcent[i] for i in range(len(dcent))]
ecent = nx.degree_centrality(sw0)
bcent = nx.betweenness_centrality(sw0)
ccent = nx.closeness_centrality(sw0)

plt.figure(1)
nx.draw(sw0,pos=None,with_labels=False,node_size=5,node_color=dcent_color,width=0.05)
plt.savefig("sw0.png",dpi=500)

Resulting Image