隔离connected_components

时间:2018-05-04 18:45:10

标签: filter networkx subgraph connected-components

我有以下网络图表摘录:

enter image description here

执行以下函数以探索连接组件的结构,因为我有一个具有大量奇异连接的稀疏网络:

nx.number_connected_components(G) 
>>> 702

list(nx.connected_components(G))
>>> [{120930, 172034},
 {118787, 173867, 176202},
 {50376, 151561}, 
...]

问题:如何将整个图表可视化限制为等于或超过三个节点的connected_components?

2 个答案:

答案 0 :(得分:2)

我们可以创建一个子图,其中包含具有相同或三个以上节点的组件:

s = G.subgraph(
    set.union(
        *filter(lambda x: len(x) >= 3, nx.connected_components(G))
    )
)

现在您只需要可视化此子图s

我们可能需要制作副本而不是SubGraph视图,在这种情况下,s = s.copy()将从子图制作副本。

答案 1 :(得分:2)

graphs = list(nx.connected_component_subgraphs(G))
list_subgraphs=[items for i in graphs for items in i if len(i)>=3]
F=G.subgraph(list_subgraphs)

创建一个包含大于3个节点的子图的平面列表,可以说!