【发布时间】:2018-06-16 01:18:44
【问题描述】:
目标是创建一个基于特征值中心度的 networkx 图,并用不同的节点颜色突出显示中心度最高的前五个节点。
以下是我当前的脚本。它工作正常,现在一切都设置为一种颜色。
#import packages
import pandas as pd
import networkx as nx
import matplotlib.pyplot as plt
import collections
#read data into nx graph
G = nx.from_pandas_dataframe(df, 'col1', 'col2')
#get dictionary of centrality measures and order it
eig = nx.eigenvector_centrality(G)
ordered = collections.OrderedDict(sorted(eig.items(), reverse = True, key=lambda t: t[1]))
#draw graph
nx.draw_spring(G, k=1, node_color = 'skyblue',
node_size = 200, font_size = 6, with_labels = True)
plt.show()
下面是我正在试验的节点着色。我正在尝试将前五个有序字典键名附加到 color_map,将它们设置为与其他颜色不同的颜色。如果您在这里有任何建议或者其他方法是否更简单,请告诉我。如果可能的话,我宁愿坚持我正在使用的包。
#adjust color of top three
color_map = []
for key, value in ordered:
if key < 5:
color_map.append('blue')
else: color_map.append('green')
【问题讨论】:
标签: python dictionary networkx ordereddictionary