def monthly_to_annual(field, lats, lons, tims, axix_no): area = gbox_areas(len(lats), len(lons)) # Do weighting field_av = np.zeros(len(tims)) for i in range(len(tims)): field_av[i] = np.average(field[i, :, :], weights=area) nyrs = len(tims) / 12 print nyrs yrs = np.arange(nyrs) field_ann = np.zeros([nyrs]) for i in range(0, nyrs): field_ann[i] = np.average(field_av[12 * i:12 * i + 12]) return field_ann
#var_2='field614' #COA var2='field643' # varn='samalas_sulfate_glob' print var # Plotting Arguments #levs=[50,100,150,200,250,300,350,400,450,500] colmap='Spectral' #cbar_label='Ozone Column / DU' levs=[0.1,0.2,0.5,1.0,2.0,5.0] cmap=plt.cm.get_cmap(colmap) levs2=np.insert(levs,0,levs[0]-1) levs2=np.append(levs2,levs2[len(levs2)-1]+1) norm=mpl.colors.BoundaryNorm(levs2, ncolors=cmap.N, clip=True) #levs=[0,60,120,180,240,300,360,420] areas=gbox_areas(73,96) outdir='/home/users/dcw32/figures/thesis_volcano/samalas/' outname=varn+'_surftimese_plot'+time.strftime("%Y%m%d") save=True format='png' extend='both' mm1=24 mm2=24 mm3=24 mm4=24 #mm=240 #################################################################### # # Extract fig=plt.figure() gs1 = gridspec.GridSpec(1, 1)
#Gridbox weights lon_maxs=lons+dlon/2. lon_mins=lons-dlon/2. enso_w=np.zeros([len(lats),len(lons)]) for i in range(len(lons)): if lon_maxs[i]<lon_maxi: if lon_mins[i]>lon_mini: #5N-5S enso_w[34:38,i]=1.0 elif lon_maxs[i]>lon_mini: enso_w[34:38,i]=(lon_maxs[i]-lon_mini)/dlon elif lon_mins[i]<lon_maxi: if lon_mins[i]>lon_mini: enso_w[34:38,i]=(lon_maxi-lon_mins[i])/dlon #Now area=gbox_areas(len(lats),len(lons)) area=area*enso_w enso=np.zeros([len(time)]) enso_ra=np.zeros([len(time)]) for k in range(len(time)): enso[k]=np.average(sst[k,:,:],weights=area) for k in range(len(time)): if k>1: enso_ra[k]=np.mean(enso[k-2:k+1]) elif k>0: enso_ra[k]=np.mean(enso[k-1:k+1]) else: enso_ra[k]=enso[k] for mons in range(12): gm_mon=np.mean(enso_ra[mons::12]) enso_ra[mons::12]=enso_ra[mons::12]-gm_mon