imported mpl_figure_editor from traits tutorial
[BS_AY250.git] / week5 / f.py
blobccc7a9770d93c88f83561ad86ead8c6ce0273658
1 '''
2 AY250 HW5 F
3 Plot polling data timeseries for one state
4 Author: Bryan Steinbach
5 '''
7 import sys
8 import os
9 import sqlite3
10 import webbrowser
12 import numpy as np
14 import pylab as pl
16 tablefn = 'poll'
18 conn = sqlite3.connect(tablefn)
20 def retrieve_state(state):
21 c = conn.cursor()
22 c.execute('''select polls.gop,polls.dem,polls.ind,polls.date1
23 from polls,names where polls.state = ? and names.state = ? order by polls.date1 asc''',(state,state))
25 gopfracs,demfracs,indfracs,dates = [],[],[],[]
26 for r in c:
27 gopfrac,demfrac,indfrac,date = r
28 gopfracs.append(gopfrac)
29 demfracs.append(demfrac)
30 indfracs.append(indfrac)
31 dates.append(date)
33 c.close()
35 c = conn.cursor()
36 c.execute('''select gop,dem,ind from names where state = ? ''',(state,))
38 gopname,demname,indname = c.next()
39 c.close()
41 dates = np.array(dates)
42 dates = pl.datestr2num(dates)
43 dates = (1 + dates/365.242199 - 2010)*365.242199
46 if gopname:
47 pl.plot(dates,gopfracs,color='red',label=gopname)
48 if demname:
49 pl.plot(dates,demfracs,color='blue',label=demname)
50 if indname:
51 pl.plot(dates,indfracs,color='green',label=indname)
53 pl.legend()
54 pl.grid()
55 pl.xlabel('Date (Day of 2010)')
56 pl.ylabel('Percent polling for candidate')
58 pl.title('Polling data for '+state)
59 pl.ylim(0,100)
61 pl.savefig(state+'.png')
63 pl.show()
66 try:
67 state = sys.argv[1]
68 except IndexError:
69 print "usage: python f.py <2 char state abbreviation>"
70 exit(1)
72 retrieve_state(state)