networkx图形中的节点\u颜色与节点列表不匹配

2024-06-02 05:53:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用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')

节点和属性的字典工作正常(writers与race匹配正确),但节点最终的颜色不正确(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\u color=node\u color为什么映射不正确。我唯一的想法是,我还为节点的大小创建了一个特征向量中心性字典。当我画C时,也许这改变了nodelist的顺序?你知道吗

import operator
eigDict = nx.eigenvector_centrality(C)
sorted_eigDict = sorted(eigDict.items(), key=operator.itemgetter(1), 
reverse=True)

如何正确地为节点着色?你知道吗


Tags: 代码innodetruefor字典属性节点