nc.data = nc.isobar(pressure) # Average over latitudes hold = np.mean(nc.data, 0) # Stack things up if n == 0: units = nc.units master = hold nlons = len(nc.boxlon) nlats = len(nc.boxlat) else: master = np.vstack((master, hold)) # fig = plt.figure(figsize=(20,10)) clev = niceClev(master, alpha=.9) try: vmin = clev[0] vmax = clev[-1] except TypeError: vmin = None vmax = None master_plot = plt.imshow(master, cmap=plt.cm.RdBu_r, vmin=vmin, vmax=vmax, aspect='auto') plt.ylabel('months since ' + start) plt.xlabel('longitude')
# Take the diff hold = t_hold - c_hold # Set some extraneous variables if it's the first instance of the for loop if n == 0: units = c_nc.units master = hold nlons = len(c_nc.boxlon) boxlons = c_nc.boxlon nlats = len(c_nc.boxlat) # Otherwise stack the data together else: master = np.vstack((master, hold)) clev = niceClev(master) if vmin is None: vmin = clev[0] if vmax is None: vmax = clev[-1] master_plot = plt.imshow(master, cmap=plt.cm.RdBu_r, vmin=vmin, vmax=vmax, aspect='auto', interpolation='none') plt.ylabel('months since ' + start) plt.xlabel('longitude')
def getClev(var, season, data=None): prettyClev = 19 if data is not None: prettyClev = niceClev(data) clevs = { \ "PRECT_H2O" : \ {"ANN_" : np.linspace(0,16,17), \ "ANN_NA" : np.linspace(0,9,19), \ "ANN_MC" : np.linspace(0,9,19), \ "ANN_IM" : np.linspace(0,9,19), \ "ANN_EP" : np.linspace(0,9,19), \ \ "ANNdiff_" : prettyClev, \ "ANNdiff_NA" : prettyClev, \ "ANNdiff_MC" : prettyClev, \ "ANNdiff_IM" : prettyClev, \ "ANNdiff_EP" : prettyClev, \ \ "DJF_" : np.linspace(0,16,17), \ "DJF_NA" : np.linspace(0,16,17), \ "DJF_MC" : np.linspace(0,16,17), \ "DJF_IM" : np.linspace(0,9,19), \ "DJF_EP" : np.linspace(0,9,19), \ \ "DJFdiff_" : prettyClev, \ "DJFdiff_NA" : prettyClev, \ "DJFdiff_MC" : prettyClev, \ "DJFdiff_IM" : prettyClev, \ "DJFdiff_EP" : prettyClev, \ \ "JJA_" : np.linspace(0,30,21), \ "JJA_NA" : np.linspace(0,30,21), \ "JJA_MC" : np.linspace(0,30,21), \ "JJA_IM" : np.linspace(0,9,19), \ "JJA_EP" : np.linspace(0,9,19), \ \ "JJAdiff_" : prettyClev, \ "JJAdiff_NA" : prettyClev, \ "JJAdiff_MC" : prettyClev, \ "JJAdiff_IM" : prettyClev, \ "JJAdiff_EP" : prettyClev, \ }, \ "PRECT" : \ {"ANN_" : np.linspace(0,16,17), \ "ANN_NA" : np.linspace(0,9,19), \ "ANN_MC" : np.linspace(0,9,19), \ "ANN_IM" : np.linspace(0,9,19), \ "ANN_EP" : np.linspace(0,9,19), \ \ "ANNdiff_" : prettyClev, \ "ANNdiff_NA" : prettyClev, \ "ANNdiff_MC" : prettyClev, \ "ANNdiff_IM" : prettyClev, \ "ANNdiff_EP" : prettyClev, \ \ "DJF_" : np.linspace(0,16,17), \ "DJF_NA" : np.linspace(0,16,17), \ "DJF_MC" : np.linspace(0,16,17), \ "DJF_IM" : np.linspace(0,9,19), \ "DJF_EP" : np.linspace(0,9,19), \ \ "DJFdiff_" : prettyClev, \ "DJFdiff_NA" : prettyClev, \ "DJFdiff_MC" : prettyClev, \ "DJFdiff_IM" : prettyClev, \ "DJFdiff_EP" : prettyClev, \ \ "JJA_" : np.linspace(0,30,21), \ "JJA_NA" : np.linspace(0,30,21), \ "JJA_MC" : np.linspace(0,30,21), \ "JJA_IM" : np.linspace(0,9,19), \ "JJA_EP" : np.linspace(0,9,19), \ \ "JJAdiff_" : prettyClev, \ "JJAdiff_NA" : prettyClev, \ "JJAdiff_MC" : prettyClev, \ "JJAdiff_IM" : prettyClev, \ "JJAdiff_EP" : prettyClev, \ }, \ "fluxDelta" : \ {"ANN_" : np.linspace(0,16,17), \ "ANN_NA" : np.linspace(0,9,19), \ "ANN_MC" : np.linspace(0,9,19), \ "ANN_IM" : np.linspace(0,9,19), \ "ANN_EP" : np.linspace(0,9,19), \ \ "ANNdiff_" : prettyClev, \ "ANNdiff_NA" : prettyClev, \ "ANNdiff_MC" : prettyClev, \ "ANNdiff_IM" : prettyClev, \ "ANNdiff_EP" : prettyClev, \ \ "DJF_" : np.linspace(0,16,17), \ "DJF_NA" : np.linspace(0,16,17), \ "DJF_MC" : np.linspace(0,16,17), \ "DJF_IM" : np.linspace(0,9,19), \ "DJF_EP" : np.linspace(0,9,19), \ \ "DJFdiff_" : prettyClev, \ "DJFdiff_NA" : prettyClev, \ "DJFdiff_MC" : prettyClev, \ "DJFdiff_IM" : prettyClev, \ "DJFdiff_EP" : prettyClev, \ \ "JJA_" : np.linspace(0,30,21), \ "JJA_NA" : np.linspace(0,30,21), \ "JJA_MC" : np.linspace(-30,30,21), \ "JJA_IM" : np.linspace(0,9,19), \ "JJA_EP" : np.linspace(0,9,19), \ \ "JJAdiff_" : prettyClev, \ "JJAdiff_NA" : prettyClev, \ "JJAdiff_MC" : np.linspace(-30,30,21), \ "JJAdiff_IM" : prettyClev, \ "JJAdiff_EP" : prettyClev, \ }, \ "PRECT_d18O" : \ {"ANNdiff_" : prettyClev, \ "ANNdiff_NA" : prettyClev, \ "ANNdiff_MC" : prettyClev, \ "ANNdiff_IM" : prettyClev, \ "ANNdiff_EP" : prettyClev, \ \ "DJFdiff_" : prettyClev, \ "DJFdiff_NA" : prettyClev, \ "DJFdiff_MC" : prettyClev, \ "DJFdiff_IM" : prettyClev, \ "DJFdiff_EP" : prettyClev, \ \ "JJAdiff_" : prettyClev, \ "JJAdiff_NA" : prettyClev, \ "JJAdiff_MC" : prettyClev, \ "JJAdiff_IM" : prettyClev, \ "JJAdiff_EP" : prettyClev, \ }, \ "OMEGA850" : \ {"ANNdiff_" : prettyClev, \ "ANNdiff_NA" : prettyClev, \ "ANNdiff_MC" : prettyClev, \ "ANNdiff_IM" : prettyClev, \ "ANNdiff_EP" : prettyClev, \ \ "DJFdiff_" : prettyClev, \ "DJFdiff_NA" : prettyClev, \ "DJFdiff_MC" : prettyClev, \ "DJFdiff_IM" : prettyClev, \ "DJFdiff_EP" : prettyClev, \ \ "JJAdiff_" : prettyClev, \ "JJAdiff_NA" : prettyClev, \ "JJAdiff_MC" : prettyClev, \ "JJAdiff_IM" : prettyClev, \ "JJAdiff_EP" : prettyClev, \ }, \ "OMEGA500" : \ {"ANNdiff_" : prettyClev, \ "ANNdiff_NA" : prettyClev, \ "ANNdiff_MC" : prettyClev, \ "ANNdiff_IM" : prettyClev, \ "ANNdiff_EP" : prettyClev, \ \ "DJFdiff_" : prettyClev, \ "DJFdiff_NA" : prettyClev, \ "DJFdiff_MC" : prettyClev, \ "DJFdiff_IM" : prettyClev, \ "DJFdiff_EP" : prettyClev, \ \ "JJAdiff_" : prettyClev, \ "JJAdiff_NA" : prettyClev, \ "JJAdiff_MC" : prettyClev, \ "JJAdiff_IM" : prettyClev, \ "JJAdiff_EP" : prettyClev, \ }, \ "OMEGA200" : \ {"ANNdiff_" : prettyClev, \ "ANNdiff_NA" : prettyClev, \ "ANNdiff_MC" : prettyClev, \ "ANNdiff_IM" : prettyClev, \ "ANNdiff_EP" : prettyClev, \ \ "DJFdiff_" : prettyClev, \ "DJFdiff_NA" : prettyClev, \ "DJFdiff_MC" : prettyClev, \ "DJFdiff_IM" : prettyClev, \ "DJFdiff_EP" : prettyClev, \ \ "JJAdiff_" : prettyClev, \ "JJAdiff_NA" : prettyClev, \ "JJAdiff_MC" : prettyClev, \ "JJAdiff_IM" : prettyClev, \ "JJAdiff_EP" : prettyClev, \ }, \ "V850" : \ {"ANNdiff_" : prettyClev, \ "ANNdiff_NA" : prettyClev, \ "ANNdiff_MC" : prettyClev, \ "ANNdiff_IM" : prettyClev, \ "ANNdiff_EP" : prettyClev, \ \ "DJFdiff_" : prettyClev, \ "DJFdiff_NA" : prettyClev, \ "DJFdiff_MC" : prettyClev, \ "DJFdiff_IM" : prettyClev, \ "DJFdiff_EP" : prettyClev, \ \ "JJAdiff_" : prettyClev, \ "JJAdiff_NA" : prettyClev, \ "JJAdiff_MC" : prettyClev, \ "JJAdiff_IM" : prettyClev, \ "JJAdiff_EP" : prettyClev, \ }, \ "V500" : \ {"ANNdiff_" : prettyClev, \ "ANNdiff_NA" : prettyClev, \ "ANNdiff_MC" : prettyClev, \ "ANNdiff_IM" : prettyClev, \ "ANNdiff_EP" : prettyClev, \ \ "DJFdiff_" : prettyClev, \ "DJFdiff_NA" : prettyClev, \ "DJFdiff_MC" : prettyClev, \ "DJFdiff_IM" : prettyClev, \ "DJFdiff_EP" : prettyClev, \ \ "JJAdiff_" : prettyClev, \ "JJAdiff_NA" : prettyClev, \ "JJAdiff_MC" : prettyClev, \ "JJAdiff_IM" : prettyClev, \ "JJAdiff_EP" : prettyClev, \ }, \ "V200" : \ {"ANNdiff_" : prettyClev, \ "ANNdiff_NA" : prettyClev, \ "ANNdiff_MC" : prettyClev, \ "ANNdiff_IM" : prettyClev, \ "ANNdiff_EP" : prettyClev, \ \ "DJFdiff_" : prettyClev, \ "DJFdiff_NA" : prettyClev, \ "DJFdiff_MC" : prettyClev, \ "DJFdiff_IM" : prettyClev, \ "DJFdiff_EP" : prettyClev, \ \ "JJAdiff_" : prettyClev, \ "JJAdiff_NA" : prettyClev, \ "JJAdiff_MC" : prettyClev, \ "JJAdiff_IM" : prettyClev, \ "JJAdiff_EP" : prettyClev, \ }, \ "VQ850" : \ {"ANNdiff_" : prettyClev, \ "ANNdiff_NA" : prettyClev, \ "ANNdiff_MC" : prettyClev, \ "ANNdiff_IM" : prettyClev, \ "ANNdiff_EP" : prettyClev, \ \ "DJFdiff_" : prettyClev, \ "DJFdiff_NA" : prettyClev, \ "DJFdiff_MC" : prettyClev, \ "DJFdiff_IM" : prettyClev, \ "DJFdiff_EP" : prettyClev, \ \ "JJAdiff_" : prettyClev, \ "JJAdiff_NA" : prettyClev, \ "JJAdiff_MC" : prettyClev, \ "JJAdiff_IM" : prettyClev, \ "JJAdiff_EP" : prettyClev, \ }, \ "VQ500" : \ {"ANNdiff_" : prettyClev, \ "ANNdiff_NA" : prettyClev, \ "ANNdiff_MC" : prettyClev, \ "ANNdiff_IM" : prettyClev, \ "ANNdiff_EP" : prettyClev, \ \ "DJFdiff_" : prettyClev, \ "DJFdiff_NA" : prettyClev, \ "DJFdiff_MC" : prettyClev, \ "DJFdiff_IM" : prettyClev, \ "DJFdiff_EP" : prettyClev, \ \ "JJAdiff_" : prettyClev, \ "JJAdiff_NA" : prettyClev, \ "JJAdiff_MC" : prettyClev, \ "JJAdiff_IM" : prettyClev, \ "JJAdiff_EP" : prettyClev, \ }, \ "VQ200" : \ {"ANNdiff_" : prettyClev, \ "ANNdiff_NA" : prettyClev, \ "ANNdiff_MC" : prettyClev, \ "ANNdiff_IM" : prettyClev, \ "ANNdiff_EP" : prettyClev, \ \ "DJFdiff_" : prettyClev, \ "DJFdiff_NA" : prettyClev, \ "DJFdiff_MC" : prettyClev, \ "DJFdiff_IM" : prettyClev, \ "DJFdiff_EP" : prettyClev, \ \ "JJAdiff_" : prettyClev, \ "JJAdiff_NA" : prettyClev, \ "JJAdiff_MC" : prettyClev, \ "JJAdiff_IM" : prettyClev, \ "JJAdiff_EP" : prettyClev, \ }, \ "U850" : \ {"ANNdiff_" : prettyClev, \ "ANNdiff_NA" : prettyClev, \ "ANNdiff_MC" : prettyClev, \ "ANNdiff_IM" : prettyClev, \ "ANNdiff_EP" : prettyClev, \ \ "DJFdiff_" : prettyClev, \ "DJFdiff_NA" : prettyClev, \ "DJFdiff_MC" : prettyClev, \ "DJFdiff_IM" : prettyClev, \ "DJFdiff_EP" : prettyClev, \ \ "JJAdiff_" : prettyClev, \ "JJAdiff_NA" : prettyClev, \ "JJAdiff_MC" : prettyClev, \ "JJAdiff_IM" : prettyClev, \ "JJAdiff_EP" : prettyClev, \ }, \ "U500" : \ {"ANNdiff_" : prettyClev, \ "ANNdiff_NA" : prettyClev, \ "ANNdiff_MC" : prettyClev, \ "ANNdiff_IM" : prettyClev, \ "ANNdiff_EP" : prettyClev, \ \ "DJFdiff_" : prettyClev, \ "DJFdiff_NA" : prettyClev, \ "DJFdiff_MC" : prettyClev, \ "DJFdiff_IM" : prettyClev, \ "DJFdiff_EP" : prettyClev, \ \ "JJAdiff_" : prettyClev, \ "JJAdiff_NA" : prettyClev, \ "JJAdiff_MC" : prettyClev, \ "JJAdiff_IM" : prettyClev, \ "JJAdiff_EP" : prettyClev, \ }, \ "U200" : \ {"ANNdiff_" : prettyClev, \ "ANNdiff_NA" : prettyClev, \ "ANNdiff_MC" : prettyClev, \ "ANNdiff_IM" : prettyClev, \ "ANNdiff_EP" : prettyClev, \ \ "DJFdiff_" : prettyClev, \ "DJFdiff_NA" : prettyClev, \ "DJFdiff_MC" : prettyClev, \ "DJFdiff_IM" : prettyClev, \ "DJFdiff_EP" : prettyClev, \ \ "JJAdiff_" : prettyClev, \ "JJAdiff_NA" : prettyClev, \ "JJAdiff_MC" : prettyClev, \ "JJAdiff_IM" : prettyClev, \ "JJAdiff_EP" : prettyClev, \ }, \ "UQ850" : \ {"ANNdiff_" : prettyClev, \ "ANNdiff_NA" : prettyClev, \ "ANNdiff_MC" : prettyClev, \ "ANNdiff_IM" : prettyClev, \ "ANNdiff_EP" : prettyClev, \ \ "DJFdiff_" : prettyClev, \ "DJFdiff_NA" : prettyClev, \ "DJFdiff_MC" : prettyClev, \ "DJFdiff_IM" : prettyClev, \ "DJFdiff_EP" : prettyClev, \ \ "JJAdiff_" : prettyClev, \ "JJAdiff_NA" : prettyClev, \ "JJAdiff_MC" : prettyClev, \ "JJAdiff_IM" : prettyClev, \ "JJAdiff_EP" : prettyClev, \ }, \ "UQ500" : \ {"ANNdiff_" : prettyClev, \ "ANNdiff_NA" : prettyClev, \ "ANNdiff_MC" : prettyClev, \ "ANNdiff_IM" : prettyClev, \ "ANNdiff_EP" : prettyClev, \ \ "DJFdiff_" : prettyClev, \ "DJFdiff_NA" : prettyClev, \ "DJFdiff_MC" : prettyClev, \ "DJFdiff_IM" : prettyClev, \ "DJFdiff_EP" : prettyClev, \ \ "JJAdiff_" : prettyClev, \ "JJAdiff_NA" : prettyClev, \ "JJAdiff_MC" : prettyClev, \ "JJAdiff_IM" : prettyClev, \ "JJAdiff_EP" : prettyClev, \ }, \ "UQ200" : \ {"ANNdiff_" : prettyClev, \ "ANNdiff_NA" : prettyClev, \ "ANNdiff_MC" : prettyClev, \ "ANNdiff_IM" : prettyClev, \ "ANNdiff_EP" : prettyClev, \ \ "DJFdiff_" : prettyClev, \ "DJFdiff_NA" : prettyClev, \ "DJFdiff_MC" : prettyClev, \ "DJFdiff_IM" : prettyClev, \ "DJFdiff_EP" : prettyClev, \ \ "JJAdiff_" : prettyClev, \ "JJAdiff_NA" : prettyClev, \ "JJAdiff_MC" : prettyClev, \ "JJAdiff_IM" : prettyClev, \ "JJAdiff_EP" : prettyClev, \ }} return clevs.get(var, dict()).get(season, prettyClev)
vname = var model = controldata.model if pressure is not None: if model == "CAM": vname += str(int(pressure / 100)) if model == "CLM": vname += str(int(pressure)) + "cm" fig = plt.figure() testdata.clevs = RegularClev(testdata.data) # This sets the clevs testdata.prep_map(season, region) # This sets the cmap controldata.clevs = RegularClev(controldata.data) # This sets the clevs controldata.prep_map(season, region) # This sets the cmap dclev = niceClev(testdata.data - controldata.data) if clev is not None: testdata.clevs = np.linspace(float(clev[0]), float(clev[1]), float(clev[2])) controldata.clevs = np.linspace(float(clev[0]), float(clev[1]), float(clev[2])) if diffclev is not None: dclev = np.linspace(float(diffclev[0]), float(diffclev[1]), float(diffclev[2])) # test data plt.subplot(3, 1, 1) m = bm(projection='cea', llcrnrlat=southern_lat,
# Average down to 1 horizontal dimension data[p_idx, :, 0] = np.nanmean(control.isobar(p, setData=False), axis=0) data[p_idx, :, 1] = np.nanmean(test.isobar(p, setData=False), axis=0) aty = np.arange(len(pressures), step=5) laby = np.array(pressures)[aty] / 100 labx = np.array(lon) atx = np.linspace(0, len(labx) - 1, num=8) labx = labx[np.array([int(round(a)) for a in atx])] fig = plt.figure() test.prep_map(season, region) control.prep_map(season, region) testclev = niceClev(data[..., 1]) controlclev = niceClev(data[..., 0]) dlev = niceClev(data[..., 1] - data[..., 0]) if clev is not None: testclev = np.linspace(clev[0], clev[1], clev[2]) controlclev = np.linspace(clev[0], clev[1], clev[2]) if diffclev is not None: dlev = np.linspace(diffclev[0], diffclev[1], diffclev[2]) plt.subplot(3, 1, 1) tplot = plt.contourf(data[..., 1], testclev, cmap=test.cmap) # plt.title("mh", fontsize = 8) plt.xticks(atx, labx) plt.yticks(aty, laby)