Python Networkx-根据不同的中心性度量对节点进行着色

Python Networkx-根据不同的中心性度量对节点进行着色,python,networkx,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_ce

我想画一个网络,其中每个节点根据该节点的中心性着色

我对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)
欢迎提供任何帮助,包括进一步研究的链接。
谢谢。

您需要将颜色值列表传递给nx.draw方法。 最简单的形式是将dcent 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)