0

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

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']

作为一个例子,看看它是否可以工作。尽管它在最后一行返回了“中间性”的关键错误。有什么方法可以手动或随机选择图中的几个节点,并给它们一个 1 表示感染,而其余的为 0。或者有更好的方法在这个图中设置感染?

4

1 回答 1

0

只需遵循set_node_attributes的正确函数调用

正确的语法:

set_node_attributes(G, values, name=None)

所以你的变量bb将出现在名称中介之前

代码:

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])

结果:

在此处输入图像描述

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

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,  bb, 'betweenness')
print(G.nodes[1])

结果:

在此处输入图像描述

于 2021-06-29T03:27:26.437 回答