Jupyter Snippet CB2nd 01_networkx

Jupyter Snippet CB2nd 01_networkx

14.1. Manipulating and visualizing graphs with NetworkX

import numpy as np
import networkx as nx
import matplotlib.pyplot as plt
%matplotlib inline
n = 10  # Number of nodes in the graph.
# Each node is connected to the two next nodes,
# in a circular fashion.
adj = [(i, (i + 1) % n) for i in range(n)]
adj += [(i, (i + 2) % n) for i in range(n)]
g = nx.Graph(adj)
print(g.nodes())
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(g.edges())
[(0, 1), (0, 9), (0, 2), (0, 8), (1, 2), ...,
 (6, 8), (7, 8), (7, 9), (8, 9)]
print(nx.adjacency_matrix(g))
  (0, 1)    1
  (0, 2)    1
  (0, 8)    1
  (0, 9)    1
  (1, 0)    1
  ...
  (8, 9)    1
  (9, 0)    1
  (9, 1)    1
  (9, 7)    1
  (9, 8)    1
fig, ax = plt.subplots(1, 1, figsize=(6, 6))
nx.draw_circular(g, ax=ax)

png

g.add_node(n, color='#fcff00')
# We add an edge from every existing
# node to the new node.
for i in range(n):
    g.add_edge(i, n)
# We define custom node positions on a circle
# except the last node which is at the center.
t = np.linspace(0., 2 * np.pi, n)
pos = np.zeros((n + 1, 2))
pos[:n, 0] = np.cos(t)
pos[:n, 1] = np.sin(t)

# A node's color is specified by its 'color'
# attribute, or a default color if this attribute
# doesn't exist.
color = [g.node[i].get('color', '#88b0f3')
         for i in range(n + 1)]

# We now draw the graph with matplotlib.
fig, ax = plt.subplots(1, 1, figsize=(6, 6))
nx.draw_networkx(g, pos=pos, node_color=color, ax=ax)
ax.set_axis_off()

png

fig, ax = plt.subplots(1, 1, figsize=(6, 6))
nx.draw_spectral(g, node_color=color, ax=ax)
ax.set_axis_off()

png