-
Notifications
You must be signed in to change notification settings - Fork 0
/
map.py
119 lines (113 loc) · 3.88 KB
/
map.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
from __future__ import print_function
import numpy as np
from matplotlib import pyplot
import matplotlib.pyplot as plt
import time
import random
from mpl_toolkits.basemap import Basemap as Basemap
from matplotlib.colors import rgb2hex
from matplotlib.patches import Polygon
from twisted.internet import task
from twisted.internet import reactor
from pylab import *
timeout = 10.0
def visualize(data,time):
print(data)
# Lambert Conformal map of lower 48 states.
m = Basemap(llcrnrlon=-119,llcrnrlat=22,urcrnrlon=-64,urcrnrlat=49,
projection='lcc',lat_1=33,lat_2=45,lon_0=-95)
# draw state boundaries.
# data from U.S Census Bureau
# http://www.census.gov/geo/www/cob/st2000.html
shp_info = m.readshapefile('st99_d00','states',drawbounds=True)
# population density by state from
# http://en.wikipedia.org/wiki/List_of_U.S._states_by_population_density
# choose a color for each state based on population density.
colors={}
statenames=[]
cmap = plt.cm.jet # use 'jet' colormap
vmin = 40; vmax = 70 # set range.
for shapedict in m.states_info:
statename = shapedict['NAME']
# skip DC and Puerto Rico.
if statename not in ['District of Columbia','Puerto Rico']:
hap = data[statename]
# calling colormap with value between 0 and 1 returns
# rgba value. Invert color range (hot colors are high
# population), take sqrt root to spread out colors more.
# print((hap-vmin)/(vmax-vmin))
colors[statename] = cmap(np.sqrt((float(hap)-vmin)/(vmax-vmin)))[:3]
statenames.append(statename)
# cycle through state names, color each one.
ax = plt.gca() # get current axes instance
for nshape,seg in enumerate(m.states):
# skip DC and Puerto Rico.
if statenames[nshape] not in ['District of Columbia','Puerto Rico']:
color = rgb2hex(colors[statenames[nshape]])
poly = Polygon(seg,facecolor=color,edgecolor=color)
ax.add_patch(poly)
# draw meridians and parallels.
m.drawparallels(np.arange(25,65,20),labels=[1,0,0,0])
m.drawmeridians(np.arange(-120,-40,20),labels=[0,0,0,1])
plt.title('Happiness by states')
savefig("maps/map"+time+".png")
# plt.show(block=False)
# plt.show()
# plt.pause(2)
# happiness = {
# 'New Jersey': 438.00,
# 'Rhode Island': 387.35,
# 'Massachusetts': 312.68,
# 'Connecticut': 271.40,
# 'Maryland': 209.23,
# 'New York': 155.18,
# 'Delaware': 154.87,
# 'Florida': 114.43,
# 'Ohio': 107.05,
# 'Pennsylvania': 105.80,
# 'Illinois': 86.27,
# 'California': 83.85,
# 'Hawaii': 72.83,
# 'Virginia': 69.03,
# 'Michigan': 67.55,
# 'Indiana': 65.46,
# 'North Carolina': 63.80,
# 'Georgia': 54.59,
# 'Tennessee': 53.29,
# 'New Hampshire': 53.20,
# 'South Carolina': 51.45,
# 'Louisiana': 39.61,
# 'Kentucky': 39.28,
# 'Wisconsin': 38.13,
# 'Washington': 34.20,
# 'Alabama': 33.84,
# 'Missouri': 31.36,
# 'Texas': 30.75,
# 'West Virginia': 29.00,
# 'Vermont': 25.41,
# 'Minnesota': 23.86,
# 'Mississippi': 23.42,
# 'Iowa': 20.22,
# 'Arkansas': 19.82,
# 'Oklahoma': 19.40,
# 'Arizona': 17.43,
# 'Colorado': 16.01,
# 'Maine': 15.95,
# 'Oregon': 13.76,
# 'Kansas': 12.69,
# 'Utah': 10.50,
# 'Nebraska': 8.60,
# 'Nevada': 7.03,
# 'Idaho': 6.04,
# 'New Mexico': 5.79,
# 'South Dakota': 3.84,
# 'North Dakota': 3.59,
# 'Montana': 2.39,
# 'Wyoming': 1.96,
# 'Alaska': 0.42}
# while(True):
# visualize(happiness)
# #for x in happiness.values():
# #x=float(random.randrange(0,400,1))
# happiness = dict((k, float(random.randrange(0,400,1))) for (k, v) in happiness.iteritems())
#