【问题标题】:Setting nodes within a networkx graph as infected and uninfected将networkx图中的节点设置为受感染和未受感染
【发布时间】:2021-09-10 20:59:10
【问题描述】:

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

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。或者有没有更好的方法在这个图中设置感染?

【问题讨论】:

  • 可能值得一看 EoN - 免责声明我写的。
  • 您能详细说明您将如何处理这个问题吗?有很多方法可以做到这一点。您可以每次创建受感染节点的列表。您可以简单地为每个节点分配一个属性,给出其状态等。

标签: python networkx infection


【解决方案1】:

只需按照正确的函数调用 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])

结果:

另外,如果你去掉元组部分,你会得到分数输出:

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

结果:

【讨论】:

    猜你喜欢
    • 2018-09-20
    • 2014-06-24
    • 2016-05-08
    • 2011-03-03
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    相关资源
    最近更新 更多