我想绘制一个网络,其中每个节点都根据该节点的中心性进行着色。
我是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)
感谢您提供任何帮助,包括进一步研究的链接。 谢谢。
答案 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)