| """ | |
| ======================== | |
| DAG - Topological Layout | |
| ======================== | |
| This example combines the `topological_generations` generator with | |
| `multipartite_layout` to show how to visualize a DAG in topologically-sorted | |
| order. | |
| """ | |
| import networkx as nx | |
| import matplotlib.pyplot as plt | |
| G = nx.DiGraph( | |
| [ | |
| ("f", "a"), | |
| ("a", "b"), | |
| ("a", "e"), | |
| ("b", "c"), | |
| ("b", "d"), | |
| ("d", "e"), | |
| ("f", "c"), | |
| ("f", "g"), | |
| ("h", "f"), | |
| ] | |
| ) | |
| for layer, nodes in enumerate(nx.topological_generations(G)): | |
| # `multipartite_layout` expects the layer as a node attribute, so add the | |
| # numeric layer value as a node attribute | |
| for node in nodes: | |
| G.nodes[node]["layer"] = layer | |
| # Compute the multipartite_layout using the "layer" node attribute | |
| pos = nx.multipartite_layout(G, subset_key="layer") | |
| fig, ax = plt.subplots() | |
| nx.draw_networkx(G, pos=pos, ax=ax) | |
| ax.set_title("DAG layout in topological order") | |
| fig.tight_layout() | |
| plt.show() | |