in analysis/webservice/plotting.py [0:0]
def createLatLonTimeAverageMapProjected(res, meta, startTime=None, endTime=None):
latSeries = [m[0]['lat'] for m in res]
lonSeries = [m['lon'] for m in res[0]][:]
data = np.zeros((len(lonSeries), len(latSeries)))
for t in range(0, len(latSeries)):
latSet = res[t]
for l in range(0, len(lonSeries)):
data[l][t] = latSet[l]['avg']
data[data == 0.0] = np.nan
# data = np.rot90(data, 3)
lats, lons = np.meshgrid(latSeries, lonSeries)
masked_array = np.ma.array(data, mask=np.isnan(data))
z = masked_array
fig = plt.figure()
fig.set_size_inches(11.0, 8.5)
ax = fig.add_axes([0.05, 0.05, 0.9, 0.9])
m = Basemap(projection='kav7', lon_0=0, resolution=None)
# m.drawmapboundary(fill_color='0.3')
im1 = m.pcolormesh(lons, lats, z, shading='gouraud', cmap=plt.cm.jet, latlon=True)
m.drawparallels(np.arange(-90., 99., 30.))
m.drawmeridians(np.arange(-180., 180., 60.))
# m.drawcoastlines()
# m.drawcountries()
cb = m.colorbar(im1, "bottom", size="5%", pad="2%")
title = meta['title']
source = meta['source']
if startTime is not None and endTime is not None:
if type(startTime) is not datetime.datetime:
startTime = datetime.datetime.fromtimestamp(startTime / 1000)
if type(endTime) is not datetime.datetime:
endTime = datetime.datetime.fromtimestamp(endTime / 1000)
dateRange = "%s - %s" % (startTime.strftime('%b %Y'), endTime.strftime('%b %Y'))
else:
dateRange = ""
ax.set_title("%s\n%s\n%s" % (title, source, dateRange))
ax.set_ylabel('Latitude')
ax.set_xlabel('Longitude')
sio = StringIO()
plt.savefig(sio, format='png')
return sio.getvalue()