import scipy.io.netcdf as ncd
f = ncd.netcdf_file("/DATA_9/data/TMP_199004_a.nc")
print f.variables['TMP_2maboveground']._attributes
{'units': 'K', '_FillValue': 9.9990003e+20, 'level': '2 m above ground', 'short_name': 'TMP_2maboveground', 'long_name': 'Temperature'}
import pandas as pd
df = pd.load("delta_byName_time_series.v2.pkl")
print df
<class 'pandas.core.panel.Panel'> Dimensions: 7 (items) x 8644 (major_axis) x 52 (minor_axis) Items axis: discharge to waves Major_axis axis: 1990-01-01 00:00:00 to 2013-08-31 00:00:00 Minor_axis axis: Amazon to Volga
%matplotlib inline
import numpy as np
import matplotlib
matplotlib.use('wxAgg')
import matplotlib.pyplot as plt
from ltf import stats, rstats, graph, tplot, data
from ltf import ltfregress as ltfr
from ltf.config import (FONTSIZE, TICKFONTSIZE, TITLEFONTSIZE,
TP, TN, TMAP, IGP, IGN, IGMAP,
NLLMAP, AEMAP, AEP, AEN, STEP)
VAR, NC_VAR = ("TMP", "TMP_2maboveground")
folder ='/DATA_9/data'
obs, dates = data.get_files(folder,"{}_*_a.nc".format(VAR), NC_VAR)
print obs.shape
(372, 190, 384)
lat0 = f.variables['latitude'][0]
lon0 = f.variables['longitude'][0]
fig = plt.figure(figsize=(10,5))
ax = fig.add_subplot(1,1,1)
ax.set_title("({:.2f}, {}) (loc 0,0) TMP".format(lat0,lon0))
ax.plot_date(dates, obs[:,0,0], '-')
[<matplotlib.lines.Line2D at 0x211a9190>]
lat0 = f.variables['latitude'][0]
lon0 = f.variables['longitude'][0]
fig = plt.figure(figsize=(10,5))
ax = fig.add_subplot(1,1,1)
ax.set_title("({:.2f}, {}) (loc 0,0)(Antarctica) TMP".format(lat0,lon0), fontsize=24)
ax.plot_date(dates, obs[:,0,0], '-', linewidth=3)
ax.xaxis.set_tick_params(labelsize=16)
ax.yaxis.set_tick_params(labelsize=16)
ax.xaxis.grid(which='major')
import random
r = 0
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.set_title("{} (day 0) TMP".format(dates[0].strftime("%B %Y")), fontsize=24)
im = ax.imshow(obs[r,:,:], cmap='RdBu_r')
cb = fig.colorbar(im,ax=ax, fraction=.023)
from mpl_toolkits.basemap import Basemap
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
m = Basemap(projection='cyl',
ax=ax, resolution = 'l', area_thresh = 1000,
llcrnrlat=-90,urcrnrlat=90, llcrnrlon=0,urcrnrlon=360)
#m is your basemap object
m.drawcoastlines()
ax.set_title("{} (day 0) TMP".format(dates[0].strftime("%B %Y")), fontsize=24)
im = m.imshow(obs[r,:,:], cmap='RdBu_r')
cb = fig.colorbar(im,ax=ax, fraction=.023)
def pm(ax,title, im, vmin, vmax):
m = Basemap(projection='cyl',
ax=ax, resolution = 'l', area_thresh = 1000,
llcrnrlat=-90,urcrnrlat=90, llcrnrlon=0,urcrnrlon=360)
#m is your basemap object
m.drawcoastlines()
ax.set_title(title, fontsize=20)
im = m.imshow(im, cmap='RdBu_r',vmin=vmin, vmax=vmax)
cb = fig.colorbar(im,ax=ax, fraction=.023)
fig = plt.figure(figsize=(10,5))
ax1 = fig.add_subplot(2,2,1)
mn = obs.min(0)
pm(ax1, "min", obs.min(0),220,310 )
ax2 = fig.add_subplot(2,2,2)
pm(ax2, "max", obs.max(0),220,310 )
ax3 = fig.add_subplot(2,2,3)
pm(ax3, "mean", obs.mean(0),220,310 )
ax4 = fig.add_subplot(2,2,4)
pm(ax4, "median", np.median(obs,0),220,310 )
df
<class 'pandas.core.panel.Panel'> Dimensions: 7 (items) x 8644 (major_axis) x 52 (minor_axis) Items axis: discharge to waves Major_axis axis: 1990-01-01 00:00:00 to 2013-08-31 00:00:00 Minor_axis axis: Amazon to Volga
from matplotlib import cm
from matplotlib import animation
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.colors as mcolors
import matplotlib.colorbar as colorbar
import matplotlib.axes as maxes
import matplotlib.ticker as mticker
import matplotlib.ticker as mticker
FLOOD_COLOR='gray'
NO_FLOOD_COLOR = 'white'
def sm(data, features):
"""Customizes pandas scatter_matrix"""
df = pd.DataFrame(data, columns=features)
fig = plt.figure(figsize=(12,12))
ax = fig.add_subplot(1, 1, 1)
#ax.set_title(title)
axes = pd.tools.plotting.scatter_matrix(
df, alpha=0.2, figsize=(6, 6), ax=ax)
n = len(features)
ut = [(r,c) for r in range(n) for c in range(r, n) if r!=c]
lt = [(r,c) for r in range(n) for c in range(r) if r!=c]
fstr = '%.2f'
nl = 10
ticks = dict()
for f in features:
ticks[f] = np.linspace(df[f].min(), df[f].max(), nl)
for r, rf in zip(range(n), features):
for c, cf in zip(range(n), features):
sax = axes[r, c]
if (r,c) in ut:
sax.cla()
sax.set_axis_off()
if (r,c) in lt:
sax.cla()
obs1 = df[rf].values
obs2 = df[cf].values
sax.scatter(obs2, obs1, s=15, edgecolor='k', color='gray')
sax.xaxis.set_major_locator(mticker.FixedLocator(ticks[cf]))
sax.yaxis.set_major_locator(mticker.FixedLocator(ticks[rf]))
if (r==c):
sax.cla()
sax.hist(df[rf], bins=ticks[rf], color="#006699")
if (c==0):
sax.set_ylabel(features[r])
sax.yaxis.set_visible(True)
sax.yaxis.set_major_locator(mticker.LinearLocator(nl))
sax.yaxis.set_ticklabels(ticks[rf])
sax.yaxis.set_major_formatter(mticker.FormatStrFormatter(fstr))
for lab in sax.yaxis.get_ticklabels():
lab.set_fontsize(12)
sax.yaxis.get_ticklabels()[0].set_visible(False)
sax.yaxis.get_ticklabels()[-1].set_visible(False)
if (r==(n-1)):
sax.set_xlabel(features[c])
sax.xaxis.set_visible(True)
sax.xaxis.set_major_locator(mticker.LinearLocator(nl))
sax.xaxis.set_ticklabels(ticks[cf])
sax.xaxis.set_major_formatter(mticker.FormatStrFormatter(fstr))
for lab in sax.xaxis.get_ticklabels():
lab.set_rotation(90)
lab.set_fontsize(12)
sax.xaxis.get_ticklabels()[0].set_visible(False)
sax.xaxis.get_ticklabels()[-1].set_visible(False)
if (r==0) and (c==0):
sax.set_yticks([])
ax.autoscale(tight=True)
df.keys()
subset = ['precip', 'waves', 'groundwater', 'discharge', 'flood']
dd = np.vstack(df[f]['Amazon'] for f in subset)
sm(dd.T, subset)
FLOOD_COLOR='red'
NO_FLOOD_COLOR = 'white'
def sm(data, features, flood_data):
"""Customizes pandas scatter_matrix"""
df = pd.DataFrame(data, columns=features)
fig = plt.figure(figsize=(12,12))
ax = fig.add_subplot(1, 1, 1)
#ax.set_title(title)
axes = pd.tools.plotting.scatter_matrix(
df, alpha=0.2, figsize=(6, 6), ax=ax)
n = len(features)
ut = [(r,c) for r in range(n) for c in range(r, n) if r!=c]
lt = [(r,c) for r in range(n) for c in range(r) if r!=c]
fstr = '%.2f'
nl = 10
ticks = dict()
for f in features:
ticks[f] = np.linspace(df[f].min(), df[f].max(), nl)
for r, rf in zip(range(n), features):
for c, cf in zip(range(n), features):
sax = axes[r, c]
if (r,c) in ut:
sax.cla()
sax.set_axis_off()
if (r,c) in lt:
sax.cla()
obs1 = df[rf].values
obs2 = df[cf].values
no_flood = (flood_data.values==0)
flood = (flood_data.values>0)
sax.scatter(obs2[no_flood], obs1[no_flood],
s=12, edgecolor='grey', color=NO_FLOOD_COLOR)
sax.scatter(obs2[flood], obs1[flood],
s=20, edgecolor='k', color=FLOOD_COLOR, alpha=0.5)
sax.xaxis.set_major_locator(mticker.FixedLocator(ticks[cf]))
sax.yaxis.set_major_locator(mticker.FixedLocator(ticks[rf]))
if (r==c):
sax.cla()
sax.hist(df[rf], bins=ticks[rf], color="#006699")
if (c==0):
sax.set_ylabel(features[r])
sax.yaxis.set_visible(True)
sax.yaxis.set_major_locator(mticker.LinearLocator(nl))
sax.yaxis.set_ticklabels(ticks[rf])
sax.yaxis.set_major_formatter(mticker.FormatStrFormatter(fstr))
for lab in sax.yaxis.get_ticklabels():
lab.set_fontsize(12)
sax.yaxis.get_ticklabels()[0].set_visible(False)
sax.yaxis.get_ticklabels()[-1].set_visible(False)
if (r==(n-1)):
sax.set_xlabel(features[c])
sax.xaxis.set_visible(True)
sax.xaxis.set_major_locator(mticker.LinearLocator(nl))
sax.xaxis.set_ticklabels(ticks[cf])
sax.xaxis.set_major_formatter(mticker.FormatStrFormatter(fstr))
for lab in sax.xaxis.get_ticklabels():
lab.set_rotation(90)
lab.set_fontsize(12)
sax.xaxis.get_ticklabels()[0].set_visible(False)
sax.xaxis.get_ticklabels()[-1].set_visible(False)
if (r==0) and (c==0):
sax.set_yticks([])
ax.autoscale(tight=True)
df.keys()
subset = ['precip', 'waves', 'groundwater', 'discharge']
dd = np.vstack(df[f]['Amazon'] for f in subset)
sm(dd.T, subset, df['flood']['Amazon'])
obs.shape
(372, 190, 384)
from matplotlib import figure
import numpy as np
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from sklearn.decomposition import PCA
import pandas as pd
import matplotlib.pyplot as plt
import os
from mpl_toolkits.basemap import Basemap,cm
from matplotlib import colors
obs.shape = (372, -1)
pca = PCA(n_components=10)
x_pca = pca.fit_transform(obs)
print x_pca.shape
(372, 10)
colors = {1:'SteelBlue', #January
2:'LightSkyBlue', #February
3:'GreenYellow', #March
4:'ForestGreen', #April
5:'OliveDrab', #May
6:'Pink', #June
7:'DeepPink', #July
8:'MediumVioletRed',#August
9:'Gold', #September
10:'Orange',#October,
11:'OrangeRed', #November
12: 'MidnightBlue', #December
}
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.scatter(x_pca[:,0], x_pca[:,1], s=30, color='lightgray', edgecolor='black')
ax.set_xlabel("PCA Component 1")
ax.set_ylabel("PCA Component 2")
<matplotlib.text.Text at 0x2b7a0cb9dc10>
from calendar import month_name
fig = plt.figure(figsize=(8,6))
ax = fig.add_subplot(1,1,1)
ax.plot(x_pca[:,0],x_pca[:,1], ':', color='gray')
for i in range(1,13):
ind = np.array([day.month==i for day in dates])
ax.scatter(x_pca[ind,0], x_pca[ind,1], s=30, color=colors[i], label=month_name[i], edgecolor='black')
ax.set_xlabel("PCA Component 1")
ax.set_ylabel("PCA Component 2")
plt.legend(bbox_to_anchor=(1.05, 1), loc=2,
ncol=1, scatterpoints=1, borderaxespad=0.)
<matplotlib.legend.Legend at 0x23399490>