将 networkx 图中的节点设置为受感染和未受感染

问题描述

我有空手道俱乐部图,我希望将其中的一些随机节点确定为受感染的节点,而其余的则未受感染。我尝试使用:

G = nx.karate_club_graph()
#pos = nx.spectral_layout(G)
bb = tuple(nx.betweenness_centrality(G))
nx.set_node_attributes(G,'betweenness',bb)
G.nodes[1]['betweenness']

举个例子看看能不能用。尽管它在最后一行返回了“介数”的关键错误。有什么方法可以手动或随机选择图中的几个节点,并给它们一个被感染的节点,而其余的都是 0。或者有没有更好的方法在这个图中设置感染?

解决方法

只需按照 set_node_attributes 的正确函数调用

正确的语法:

set_node_attributes(G,values,name=None)

所以你的变量 bb 将出现在名称 betweenness

之前

代码:

import networkx as nx
G = nx.karate_club_graph()
bb = tuple(nx.betweenness_centrality(G))
# changed
nx.set_node_attributes(G,bb,'betweenness')
print(G.nodes[1])

结果:

enter image description here

此外,如果您删除元组部分,您将获得分数输出:

import networkx as nx
G = nx.karate_club_graph()
bb = tuple(nx.betweenness_centrality(G))
# changed
bb = nx.betweenness_centrality(G)
nx.set_node_attributes(G,'betweenness')
print(G.nodes[1])

结果:

enter image description here