gpt4 book ai didi

python - NetworkX 中的 self 图

转载 作者:行者123 更新时间:2023-12-03 14:23:10 24 4
gpt4 key购买 nike

我有带有节点的二部图,例如(a1,a2,...a100,m1,m2,...)。我想找到某些节点的诱导子图(a1,a2 和 a10)。我可以通过使用 networkx.ego_graph 来做到这一点,但它一次取一个顶点并返回诱导图。我想知道是否有任何方法可以对我感兴趣的所有节点立即执行此操作,然后选择最大的节点。

最佳答案

对于一般情况,可以使用 nx.ego_graph 获得自我图.

尽管在您的特定情况下,您似乎想找到最大的诱导 ego graph在网络中。为此,您可以首先找到具有最高 degree 的节点。 ,然后得到它的自我图。

让我们创建一个示例二部图:

import networkx as nx

B = nx.Graph()
B.add_nodes_from([1, 2, 3, 4, 5, 6], bipartite=0)
B.add_nodes_from(['a', 'b', 'c', 'j', 'k'], bipartite=1)
B.add_edges_from([(1, 'a'), (1, 'b'), (2, 'b'), (2, 'c'), (3, 'c'), (4, 'a'),
(2, 'b'), (3, 'a'), (5, 'k'), (6, 'k'), (6, 'j')])


rcParams['figure.figsize'] = 12, 6
nx.draw(B, node_color='lightblue',
with_labels=True)

enter image description here

正如问题中提到的,假设我们要在以下节点列表中进行选择:
l = [1,'a',6]

看起来您要选择其中具有最高中心度的一个。为此,您可以这样做:
deg_l = {i:B.degree(i) for i in l}    
highest_centrality_node = max(deg_l.items(), key=lambda x: x[1])[0]

现在我们可以绘制相应的 ego_graph和:
ego_g = nx.ego_graph(B, highest_centrality_node)
d = dict(ego_g.degree)
nx.draw(ego_g, node_color='lightblue',
with_labels=True,
nodelist=d,
node_size=[d[k]*300 for k in d])

enter image description here

关于python - NetworkX 中的 self 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60935289/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com