def plot_reg(pts_reg, nm, clev=0.2, xsample=1, ysample=1, axlims=(5, 32, 60, 100), cline=None, color='0.3', alpha=1.0, markersize=2): """Plot regression of grid point indices onto large-scale index.""" var = pts_reg[nm]['m'] mask = pts_reg[nm]['pts_mask'] xname = atm.get_coord(mask, 'lon', 'name') yname = atm.get_coord(mask, 'lat', 'name') atm.contourf_latlon(var, clev=clev, axlims=axlims, extend='both') atm.stipple_pts(mask, xname=xname, yname=yname, xsample=xsample, ysample=ysample, color=color, alpha=alpha, markersize=markersize) if cline is not None: atm.contour_latlon(var, clev=[cline], axlims=axlims, colors='b', linewidths=2) fix_axes(axlims)
def plot_maps(var, days, grp, cmin=0, cmax=20, cint=1, axlims=(5, 35, 60, 100), cmap='PuBuGn', res='c', extend='max', cticks=None, daypos=(0.05, 0.85)): """Lat-lon maps of precip on selected days.""" clev = np.arange(cmin, cmax + cint/2.0, cint) if cticks is None: cticks = np.arange(cmin, clev.max() + 1, 2) lat1, lat2, lon1, lon2 = axlims for day in days: grp.next() pcp = var.sel(dayrel=day) m = atm.init_latlon(lat1, lat2, lon1, lon2, resolution=res) m = atm.contourf_latlon(pcp, m=m, clev=clev, axlims=axlims, cmap=cmap, colorbar=False, extend=extend) atm.text(day, daypos, fontsize=12, fontweight='bold') # plt.colorbar(ax=grp.axes.ravel().tolist(), orientation='vertical', # shrink=0.8, ticks=cticks) atm.colorbar_multiplot(orientation='vertical', shrink=0.8, ticks=cticks) fix_axes(axlims)
def pts_clim(index_pts, nm, clev_bar=10, clev_std=np.arange(0, 21, 1), axlims=(5, 32, 60, 100), cmap='spectral', res='c', label_locs=None, inline_spacing=2): """Plot climatological mean and standard deviation of grid point indices.""" varbar = index_pts[nm].mean(dim='year') varstd = index_pts[nm].std(dim='year') lat1, lat2, lon1, lon2 = axlims m = atm.init_latlon(lat1, lat2, lon1, lon2, resolution=res) m = atm.contourf_latlon(varstd, m=m, clev=clev_std, axlims=axlims, cmap=cmap, symmetric=False, colorbar=False, extend='max') m.colorbar(ticks=np.arange(0, 21, 2)) _, cs = atm.contour_latlon(varbar, clev=clev_bar, axlims=axlims, colors='k', linewidths=2) cs_opts = {'fmt' : '%.0f', 'fontsize' : 9, 'inline_spacing' : inline_spacing} if label_locs is not None: cs_opts['manual'] = label_locs plt.clabel(cs, **cs_opts) fix_axes(axlims)
# 1-d timeseries var = data['U200'].sel(dayrel=day) ts = atm.mean_over_geobox(var, 10, 30, 60, 100) ts_reg = atm.Linreg(onset, ts) ts_reg2 = atm.regress_field(ts, onset) print(ts_reg.r, ts_reg2.r.values) print(ts_reg.slope, ts_reg2.m.values) print(ts_reg.p, ts_reg2.p.values) # x-y data regdays = [-60, -30, 0, 30, 60] plotdays = [-60, -30] clev_r = np.arange(-1.0, 1.01, 0.05) for nm in varnms: print(nm) var = data[nm].sel(dayrel=regdays) reg_daily = atm.regress_field(var, onset, axis=0) for day in plotdays: reg = reg_daily.sel(dayrel=day) title = '%s day %d vs. Onset ' % (var.name, day) cint_m = atm.cinterval(reg.m) clev_m = atm.clevels(reg.m, cint_m, symmetric=True) plt.figure(figsize=(11, 8)) plt.subplot(1, 2, 1) atm.contourf_latlon(reg['r'], clev=clev_r, cmap='RdBu_r') plt.title(title + ' - Corr Coeff') plt.subplot(1, 2, 2) atm.contourf_latlon(reg['m'], clev=clev_m, cmap='RdBu_r') plt.title(title + ' - Reg Coeff')