Mercurial > repos > shellac > sam_consensus_v3
view env/share/doc/networkx-2.5/examples/drawing/plot_giant_component.py @ 0:4f3585e2f14b draft default tip
"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author | shellac |
---|---|
date | Mon, 22 Mar 2021 18:12:50 +0000 |
parents | |
children |
line wrap: on
line source
""" =============== 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()