""" ============ 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()