def neutpos(ocn = 'Pac'): phase = 'neutpos' print fp+'/'+phase if isfile(fp+'/'+phase): f = open(fp+'/'+phase) model = pickle.load(f) else: model = gen_model(phase = phase) f = open(fp+'/'+phase, 'w') pickle.dump(model, f) _, _, _, phaseind = get_climate_data() fig = plt.figure(figsize = (12,8)); axes = {} years = model.clim_data.index.year axes['eofmap'] = fig.add_axes([0.05,0.05,0.4,0.4]) axes['sstmap'] = fig.add_axes([0.05,0.55,0.4,0.4]) axes['sstpc'] = fig.add_axes([0.55,0.725,0.4,0.2]) axes['eofpc'] = fig.add_axes([0.55,0.1,0.4,0.2]) axes['scat'] = fig.add_axes([0.645, 0.35, 0.225, 0.3]) fig, axes['sstmap'], m = sstMap(model, fig = fig, cmap = cm.inferno, ax = axes['sstmap']) if ocn == 'Pac': region = ['Pacific']; eof = '1'; title = 'Pacific EOF-2' switch = False if ocn == 'Atl': region = ['Atlantic']; eof = '3'; title = 'Atlantic EOF-4' switch = False final, lats, lons, pcs, prcp = combine_oceans(regions = region) fig, axes['eofmap'], m = create_full_map_combined(final, lats, lons, eof = eof, fig = fig, ax = axes['eofmap'], switch = switch) sstpc = model.crossvalpcr(xval = False) sstpc = sstpc/abs(sstpc).max() eofpc = pcs[0][phaseind[phase]] eofpc = eofpc/abs(eofpc).max() axes['sstpc'].plot(sstpc) axes['eofpc'].plot(eofpc) axes['scat'].scatter(sstpc, eofpc) axes['sstmap'].set_title('NIPA Correlation Map') axes['eofmap'].set_title(title) idx = range(0, len(years),4) axes['sstpc'].set_xticks(idx) axes['sstpc'].set_xticklabels(years[idx]) axes['eofpc'].set_xticks(idx) axes['eofpc'].set_xticklabels(years[idx]) fig.suptitle('Phase: Neutral Positive') return fig, axes
def lanina(): phase = 'lanina' print fp+'/'+phase if isfile(fp+'/'+phase): f = open(fp+'/'+phase) model = pickle.load(f) else: model = gen_model(phase = phase) f = open(fp+'/'+phase, 'w') pickle.dump(model, f) _, _, _, phaseind = get_climate_data() fig = plt.figure(figsize = (12,8)); axes = {} years = model.clim_data.index.year axes['eofmap'] = fig.add_axes([0.05,0.05,0.4,0.4]) axes['sstmap'] = fig.add_axes([0.05,0.55,0.4,0.4]) axes['sstpc'] = fig.add_axes([0.55,0.725,0.4,0.2]) axes['eofpc'] = fig.add_axes([0.55,0.1,0.4,0.2]) axes['scat'] = fig.add_axes([0.645, 0.35, 0.225, 0.3]) fig, axes['sstmap'], m = sstMap(model, fig = fig, cmap = cm.inferno, ax = axes['sstmap']) final, lats, lons, pcs, prcp = combine_oceans(regions = ['Pacific']) fig, axes['eofmap'], m = create_full_map_combined(final, lats, lons, eof = '0', fig = fig, ax = axes['eofmap']) sstpc = model.crossvalpcr(xval = False) sstpc = sstpc/abs(sstpc).max() eofpc = pcs[0][phaseind[phase]] eofpc = eofpc/abs(eofpc).max() axes['sstpc'].plot(sstpc) axes['eofpc'].plot(eofpc) axes['scat'].scatter(sstpc, eofpc) axes['scat'].axis([-1.1, 0, -1.1, 0]) axes['sstmap'].set_title('NIPA Correlation Map') axes['eofmap'].set_title('Pacific EOF-1') idx = range(0, len(years),2) axes['sstpc'].set_xticks(idx) axes['sstpc'].set_xticklabels(years[idx]) axes['eofpc'].set_xticks(idx) axes['eofpc'].set_xticklabels(years[idx]) fig.suptitle('Phase: La Nina') return fig, axes
def gen_model(phase = 'lanina', cc = 0.95, bc = 0.80, quick = True): from simpleNIPA import NIPAphase from numpy import ravel from smapFuncts import sstMap lcrb_prcp = get_lcrb_prcp() sst, slp, mei, phaseind = get_climate_data() model = NIPAphase(lcrb_prcp, sst, mei, phaseind[phase]) model.bootcorr(corrconf = cc, bootconf = bc, quick = quick) model.gridCheck(lim = 5, ntim = 3, debug = True) model.crossvalpcr() return model
def violin(): from data_load import get_lcrb_prcp, get_climate_data prcp = get_lcrb_prcp() _,_,_, phaseind = get_climate_data() cmap = mpl.cm.get_cmap('viridis') rgba = [cmap(0.25), cmap(0.7)] data = [prcp[phaseind['lanina']], prcp, prcp[phaseind['elnino']]] violin_parts = plt.violinplot(data, showmeans = True) plt.ylim(0,650) plt.xticks(range(1,4),['La Nina', 'All Years', 'El Nino'], fontsize = 18) plt.title('MAMJ Precipitation in LCRB by Phase', fontsize = 22, fontweight = 'bold') for feature in ['cbars', 'cmins', 'cmeans', 'cmaxes']: violin_parts[feature].set_color('black') for pc, color in zip(violin_parts['bodies'], [cmap(0), cmap(0.75), cmap(0.4)]): pc.set_facecolor(color) plt.ylabel('Precipitation, mm', fontweight='bold') plt.savefig(EV['HOME'] + '/Desktop/Feb20Response/images/violin') return
def timeseries(): ###Make figure showing which years fall where prcp = get_lcrb_prcp() sst, slp, mei, phaseind = get_climate_data() cmap = mpl.cm.get_cmap('seismic') fig, ax = plt.subplots(1, figsize = (12,6)) ax.plot(prcp, color = 'k', linewidth = 2) colors = [cmap(0.2), cmap(0.4), cmap(0.6), cmap(0.8)] phases = ['lanina', 'neutneg', 'neutpos', 'elnino'] for phase, color in zip(phases, colors): if phase == 'lanina': title = 'La Nina' if phase == 'elnino': title = 'El Nino' if phase == 'neutpos': title = 'Neutral-Positive' if phase == 'neutneg': title = 'Neutral-Negative' ax.plot(prcp[phaseind[phase]], marker = 'o', markersize = 10, color = color, linewidth = 0, label = title) plt.legend(loc = 'best') ax.set_ylim(0, 650) ax.set_xlabel('Years', fontsize = 16, fontweight = 'bold') ax.set_ylabel('Total MAMJ Precipitaton, mm', fontsize = 16, fontweight = 'bold') fig.savefig(EV['HOME'] + '/Desktop/Feb20Response/images/timeseries') return