
| Current Path : /proc/thread-self/root/usr/local/share/doc/networkx-2.5/examples/drawing/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : //proc/thread-self/root/usr/local/share/doc/networkx-2.5/examples/drawing/plot_giant_component.py |
"""
===============
Giant Component
===============
This example illustrates the sudden appearance of a
giant connected component in a binomial random graph.
"""
import math
import matplotlib.pyplot as plt
import networkx as nx
# This example needs Graphviz and either PyGraphviz or pydot.
# from networkx.drawing.nx_pydot import graphviz_layout as layout
from networkx.drawing.nx_agraph import graphviz_layout as layout
# If you don't have pygraphviz or pydot, you can do this
# layout = nx.spring_layout
n = 150 # 150 nodes
# p value at which giant component (of size log(n) nodes) is expected
p_giant = 1.0 / (n - 1)
# p value at which graph is expected to become completely connected
p_conn = math.log(n) / float(n)
# the following range of p values should be close to the threshold
pvals = [0.003, 0.006, 0.008, 0.015]
region = 220 # for pylab 2x2 subplot layout
plt.subplots_adjust(left=0, right=1, bottom=0, top=0.95, wspace=0.01, hspace=0.01)
for p in pvals:
G = nx.binomial_graph(n, p)
pos = layout(G)
region += 1
plt.subplot(region)
plt.title(f"p = {p:.3f}")
nx.draw(G, pos, with_labels=False, node_size=10)
# identify largest connected component
Gcc = sorted(nx.connected_components(G), key=len, reverse=True)
G0 = G.subgraph(Gcc[0])
nx.draw_networkx_edges(G0, pos, edge_color="r", width=6.0)
# show other connected components
for Gi in Gcc[1:]:
if len(Gi) > 1:
nx.draw_networkx_edges(
G.subgraph(Gi), pos, edge_color="r", alpha=0.3, width=5.0,
)
plt.show()