#! /usr/bin/env python """ ============== Directed Graph ============== Draw a graph with directed edges using a colormap and different node sizes. Edges have different colors and alphas (opacity). Drawn using matplotlib. """ # Author: Rodrigo Dorantes-Gilardi (rodgdor@gmail.com) import matplotlib as mpl import matplotlib.pyplot as plt import networkx as nx G = nx.generators.directed.random_k_out_graph(10, 3, 0.5) pos = nx.layout.spring_layout(G) node_sizes = [3 + 10 * i for i in range(len(G))] M = G.number_of_edges() edge_colors = range(2, M + 2) edge_alphas = [(5 + i) / (M + 4) for i in range(M)] nodes = nx.draw_networkx_nodes(G, pos, node_size=node_sizes, node_color='blue') edges = nx.draw_networkx_edges(G, pos, node_size=node_sizes, arrowstyle='->', arrowsize=10, edge_color=edge_colors, edge_cmap=plt.cm.Blues, width=2) # set alpha value for each edge for i in range(M): edges[i].set_alpha(edge_alphas[i]) pc = mpl.collections.PatchCollection(edges, cmap=plt.cm.Blues) pc.set_array(edge_colors) plt.colorbar(pc) ax = plt.gca() ax.set_axis_off() plt.show()