40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
#! /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()
|