]> asedeno.scripts.mit.edu Git - bluechips.git/blobdiff - bluechips/lib/plotting.py
We have pie charts.
[bluechips.git] / bluechips / lib / plotting.py
diff --git a/bluechips/lib/plotting.py b/bluechips/lib/plotting.py
new file mode 100644 (file)
index 0000000..89c56fc
--- /dev/null
@@ -0,0 +1,32 @@
+"""
+Generate various plots
+"""
+import matplotlib.pyplot as plt
+import numpy as np
+
+from bluechips import model
+from bluechips.model import meta, User, Expenditure
+
+def balance_plot(filename='balance', dates=None):
+    """
+    Create a plot showing the net balance for each user over the
+    course of time.
+
+    dates is a tuple of datetime objects.
+    """
+    users = meta.Session.query(User).all()
+    expenses = meta.Session.query(Expenditure).order_by(Expenditure.date)
+
+    totals = dict()
+    dates = [e.date for e in expenses]
+    for u in users:
+        totals[u.name] = np.cumsum([e.share(u) for e in expenses])
+    
+    fig = plt.figure()
+    ax = fig.add_subplot(1,1,1)
+    lines = dict()
+    for u,y in totals.items():
+        lines[u] = plt.plot(dates,totals[u], label=u)
+        
+    ax.legend(loc='best')
+    fig.savefig(filename)