| """ | |
| =============== | |
| Degree Sequence | |
| =============== | |
| Random graph from given degree sequence. | |
| """ | |
| import matplotlib.pyplot as plt | |
| import networkx as nx | |
| # Specify seed for reproducibility | |
| seed = 668273 | |
| z = [5, 3, 3, 3, 3, 2, 2, 2, 1, 1, 1] | |
| print(nx.is_graphical(z)) | |
| print("Configuration model") | |
| G = nx.configuration_model( | |
| z, seed=seed | |
| ) # configuration model, seed for reproducibility | |
| degree_sequence = [d for n, d in G.degree()] # degree sequence | |
| print(f"Degree sequence {degree_sequence}") | |
| print("Degree histogram") | |
| hist = {} | |
| for d in degree_sequence: | |
| if d in hist: | |
| hist[d] += 1 | |
| else: | |
| hist[d] = 1 | |
| print("degree #nodes") | |
| for d in hist: | |
| print(f"{d:4} {hist[d]:6}") | |
| pos = nx.spring_layout(G, seed=seed) # Seed layout for reproducibility | |
| nx.draw(G, pos=pos) | |
| plt.show() | |