lonyen11
lonyen11

Reputation: 93

Return unconnected islands of nodes in a network with Networkx

I am using NetworkX for analyzing a network G of transport connections. After visualizing it I saw that there are some "islands" of nodes that do not have any connections to the network. Those islands mostly consist of 2 to 5 nodes. Since the network is really big I am looking for a command that returns each of those islands, preferrably in a data structure that indicates the names of the nodes. The isolates(G) command only returns nodes of degree zero, but I am interested in the islands. Is there a command for that?

Upvotes: 1

Views: 469

Answers (1)

JWilliams1
JWilliams1

Reputation: 280

Look into the connected_components function

# Create three separate graphs and then compose them together.
import networkx as nx
G = nx.complete_graph(8)
G2 = nx.complete_graph(range(13, 15))
G3 = nx.complete_graph(range(16, 19))

G = nx.compose_all([G, G2, G3])
nx.draw(G)

Graphs

Using connected_components():

list(nx.connected_components(G))
[{0, 1, 2, 3, 4, 5, 6, 7}, {13, 14}, {16, 17, 18}]
threshold = 6
[c for c in nx.connected_components(G) if len(c) < threshold]
[{13, 14}, {16, 17, 18}]

You can also check out connected_components_subgraph

Upvotes: 5

Related Questions