Source code for abm.viz

# -*- coding: utf-8 -*-
"""
    abm.viz
    ~~~~~~~

    Displaying agent population
"""

from matplotlib.pylab import plt

CLUSTER_COLORS = {
    'A': 'r',
    'B': 'b',
    'C': 'g'
}


[docs]def display_network(pts, connectivity_matrix, current=None, target=None): fig = construct_network(pts, connectivity_matrix, current=current, target=target) plt.show()
[docs]def construct_network(pts, connectivity_matrix, current=None, target=None): # Scatter plot of points, color coded by class fig, ax = plt.subplots() size = 35 for cluster, color in CLUSTER_COLORS.iteritems(): class_points = [x for x in pts if x.cluster == cluster] ax.scatter([p.x for p in class_points], [p.y for p in class_points], c=color, s=size) # Draw the connections if connectivity_matrix is not None: for start_ix, connections in enumerate(connectivity_matrix): for connect_ix, connected in enumerate(connections): if connected and connect_ix != start_ix: ax.plot(*zip( (pts[start_ix].x, pts[start_ix].y), (pts[connect_ix].x, pts[connect_ix].y)), c='k', linewidth=0.5) # Show where the message is going and where it currently is if current and target: ax.scatter(pts[current].x, pts[current].y, c='m', s=150) ax.scatter(pts[target].x, pts[target].y, c='y', s=190) return fig