| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- """
- ============
- Simple graph
- ============
- Draw simple graph with manual layout.
- """
- import networkx as nx
- import matplotlib.pyplot as plt
- G = nx.Graph()
- G.add_edge(1, 2)
- G.add_edge(1, 3)
- G.add_edge(1, 5)
- G.add_edge(2, 3)
- G.add_edge(3, 4)
- G.add_edge(4, 5)
- # explicitly set positions
- pos = {1: (0, 0), 2: (-1, 0.3), 3: (2, 0.17), 4: (4, 0.255), 5: (5, 0.03)}
- options = {
- "font_size": 36,
- "node_size": 3000,
- "node_color": "white",
- "edgecolors": "black",
- "linewidths": 5,
- "width": 5,
- }
- nx.draw_networkx(G, pos, **options)
- # Set margins for the axes so that nodes aren't clipped
- ax = plt.gca()
- ax.margins(0.20)
- plt.axis("off")
- plt.show()
- # %%
- # A directed graph
- G = nx.DiGraph([(0, 3), (1, 3), (2, 4), (3, 5), (3, 6), (4, 6), (5, 6)])
- # group nodes by column
- left_nodes = [0, 1, 2]
- middle_nodes = [3, 4]
- right_nodes = [5, 6]
- # set the position according to column (x-coord)
- pos = {n: (0, i) for i, n in enumerate(left_nodes)}
- pos.update({n: (1, i + 0.5) for i, n in enumerate(middle_nodes)})
- pos.update({n: (2, i + 0.5) for i, n in enumerate(right_nodes)})
- nx.draw_networkx(G, pos, **options)
- # Set margins for the axes so that nodes aren't clipped
- ax = plt.gca()
- ax.margins(0.20)
- plt.axis("off")
- plt.show()
|