我对此网络的每个节点都有网络和属性情绪。这个属性是一个浮点数,大约从-1到1不等。我想根据这个属性来对网络的节点进行collor,这意味着当值接近1时,颜色更强(alpha 1)或蓝色,当属性接近-1时,颜色变弱(alpha更接近到0)或红色。我怎么能这样做?
以下是我的代码的一部分:
#sentiment
G.node[tweet['user'][ u'id']]['sentiment'] = 0.92762
#plot
color_map = {0:'#3B5998', 1:'#E4AF48'}
nx.draw_networkx(G, node_color=[color_map[G.node[node]['match']] for node in G], with_labels=False)
它返回以下错误:
Traceback (most recent call last):
File "graph_better.py", line 38, in <module>
nx.draw_networkx(G, node_color=[color_map[G.node[node]['sentiment']] for node in G], with_labels=False)
KeyError: -0.351317
答案 0 :(得分:1)
您的color_map
是一个只包含两个键的词典:0
和1
。中间的任何值都不是字典的正确键,因此您得到KeyError
。
要修复代码,您必须:首先将node_color
参数传递给值列表。在你的情况下,它将是:
node_color = [G.node[node]['sentiment'] for node in G]
其次,您需要使用cmap
参数,例如:
cmap = plt.cm.Reds_r
所以最后你会:
nx.draw_networkx(G, node_color = [G.node[node]['sentiment'] for node in G], cmap = plt.cm.Reds_r, with_labels = False)
现在唯一剩下的就是将正确的颜色映射传递给cmap
。