]> asedeno.scripts.mit.edu Git - bluechips.git/blob - bluechips/lib/plotting.py
89c56fcd6eaab03a169fcc293ff19cdbad40f86c
[bluechips.git] / bluechips / lib / plotting.py
1 """
2 Generate various plots
3 """
4 import matplotlib.pyplot as plt
5 import numpy as np
6
7 from bluechips import model
8 from bluechips.model import meta, User, Expenditure
9
10 def balance_plot(filename='balance', dates=None):
11     """
12     Create a plot showing the net balance for each user over the
13     course of time.
14
15     dates is a tuple of datetime objects.
16     """
17     users = meta.Session.query(User).all()
18     expenses = meta.Session.query(Expenditure).order_by(Expenditure.date)
19
20     totals = dict()
21     dates = [e.date for e in expenses]
22     for u in users:
23         totals[u.name] = np.cumsum([e.share(u) for e in expenses])
24     
25     fig = plt.figure()
26     ax = fig.add_subplot(1,1,1)
27     lines = dict()
28     for u,y in totals.items():
29         lines[u] = plt.plot(dates,totals[u], label=u)
30         
31     ax.legend(loc='best')
32     fig.savefig(filename)