我正在使用networkx制作图表。我的节点是书名,每个都有作者种族的属性。我根据种族对节点着色,使用以下代码:
node_color = []
for node in C.nodes(data=True):
try:
if node[1]['RACE'] == 0.0:
node_color.append('blue')
elif node[1]['RACE'] == 1.0:
node_color.append('red')
elif node[1]['RACE'] == 2.0:
node_color.append('green')
except(TypeError, KeyError):
node_color.append('brown')
节点和属性的字典工作正常(作者与种族正确匹配),但最终节点的颜色不正确(Toni Morrison'最蓝的眼睛是蓝色的,即代替红色)。这是我的绘图代码:
print (nx.draw_random(C, node_color=node_color,
labels=labelDict,node_size=[v * 300 for v in eigDict.values()], width =
.02, font_size=9))
我不确定为什么node_color = node_color没有正确映射。我唯一的想法是我还为节点的大小创建了一个特征向量中心的字典。当我绘制C时,这可能会改变节点列表的顺序吗?
import operator
eigDict = nx.eigenvector_centrality(C)
sorted_eigDict = sorted(eigDict.items(), key=operator.itemgetter(1),
reverse=True)
如何才能使节点正确着色?