def plot_onereg(self, regid): """Plot mintime of connectivity for one individual region""" tomat = self.llat * np.nan for i,v in enumerate(self.mintmat[1:,regid]): tomat[self.regmat==(i+1)] = v frmat = self.llat * np.nan for i,v in enumerate(self.mintmat[regid,1:]): frmat[self.regmat==(i+1)] = v djtk,lim = djdticks(max(np.nanmax(tomat), np.nanmax(frmat))) figpref.current() pl.close(1) fig = pl.figure(1,(8,8)) pl.clf() pl.suptitle("Connectivity for region %i" % regid) mask = self.regmat == regid x,y = self.gcm.mp(self.llon[mask], self.llat[mask]) pl.subplots_adjust(hspace=0, top=0.95,bottom = 0.15) pl.subplot(2,1,1, axisbg="0.8") self.gcm.pcolor(frmat, cmap=WRY(), rasterized=True) pl.clim(0,lim) self.gcm.mp.text(70,60,'Time from region') self.gcm.mp.scatter(x,y,5,'b') pl.subplot(2,1,2, axisbg="0.8") self.gcm.pcolor(tomat, cmap=WRY(), rasterized=True) pl.clim(0,lim) self.gcm.mp.text(70,60,'Time to region') self.gcm.mp.scatter(x,y,5,'b') if 'mycolor' in sys.modules: mycolor.freecbar([0.2,0.12,0.6,0.025], djtk, cmap=WRY()) pl.savefig('figs/onereg_%02i_%02i_%06i.png' % (self.regdi, self.regdj, regid))
def multiplot(self,jd1=730120.0, djd=60, dt=20): if not hasattr(self,'disci'): self.generate_regdiscs() self.x = self.disci self.y = self.discj if not hasattr(self,'lon'): self.ijll() figpref.presentation() pl.close(1) pl.figure(1,(10,10)) conmat = self[jd1-730120.0:jd1-730120.0+60, dt:dt+10] x,y = self.gcm.mp(self.lon, self.lat) self.gcm.mp.merid = [] self.gcm.mp.paral = [] pl.subplots_adjust(wspace=0,hspace=0,top=0.95) pl.subplot(2,2,1) pl.pcolormesh(miv(conmat),cmap=cm.hot) pl.clim(0,250) pl.plot([0,800],[0,800],'g',lw=2) pl.gca().set_aspect(1) pl.setp(pl.gca(),yticklabels=[]) pl.setp(pl.gca(),xticklabels=[]) pl.colorbar(aspect=40,orientation='horizontal', pad=0,shrink=.8,fraction=0.05,ticks=[0,50,100,150,200]) pl.subplot(2,2,2) colorvec = (np.nansum(conmat,axis=1)-np.nansum(conmat,axis=0))[1:] self.gcm.mp.scatter(x, y, 10, 'w', edgecolor='k') self.gcm.mp.scatter(x, y, 10, colorvec) self.gcm.mp.nice() pl.clim(0,10000) pl.subplot(2,2,3) colorvec = np.nansum(conmat,axis=1)[1:] self.gcm.mp.scatter(x, y, 10, 'w', edgecolor='k') self.gcm.mp.scatter(x, y, 10, colorvec) self.gcm.mp.nice() pl.clim(0,10000) pl.subplot(2,2,4) colorvec = np.nansum(conmat,axis=0)[1:] self.gcm.mp.scatter(x, y, 10, 'w', edgecolor='k') self.gcm.mp.scatter(x, y, 10, colorvec) self.gcm.mp.nice() pl.clim(0,10000) mycolor.freecbar([0.2,.06,0.6,0.020],[2000,4000,6000,8000]) pl.suptitle("Trajectories seeded from %s to %s, Duration: %i-%i days" % (pl.num2date(jd1).strftime("%Y-%m-%d"), pl.num2date(jd1+djd).strftime("%Y-%m-%d"), dt,dt+10)) pl.savefig('multplot_%i_%03i.png' % (jd1,dt),transparent=True)
def plot_numreg(self, maxdays, regdi=5, regdj=5): """Plot number of regions connected to each region""" if not hasattr(self,'mintmat'): self.read_mintmat(self,regdi=regdi, regdj=regdj) def calc_numregmat(loc="to"): axis = 1 if loc is "to" else 0 numreg = self.regmat[:] * np.nan numvec = np.sum(np.where(self.mintmat<=maxdays, 1, 0), axis=axis) for r,n in zip(np.arange(1,self.nreg+1), numvec[1:]): numreg[self.regmat==r] = n return numreg numregfrom = calc_numregmat("from") numregto = calc_numregmat("to") lim = max(np.nanmax(numregto, axis=None), np.nanmax(numregfrom, axis=None)) figpref.current() pl.close(1) fig = pl.figure(1,(8,11)) pl.clf() pl.suptitle("Connectivity after %i days" % maxdays) pl.subplots_adjust(hspace=0, top=0.95,bottom = 0.15) pl.subplot(3,1,1, axisbg="0.8") self.gcm.pcolor(miv(numregfrom), cmap=WRY(), rasterized=True) pl.clim(0,lim) self.gcm.mp.text(70,60,'Number of source regions') pl.subplot(3,1,2, axisbg="0.8") self.gcm.pcolor(miv(numregto), cmap=WRY(), rasterized=True) pl.clim(0,lim) self.gcm.mp.text(70,60,'Number of sink regions') pl.subplot(3,1,3, axisbg="0.8") self.gcm.pcolor(miv(numregto-numregfrom), cmap=GBRY(), rasterized=True) pl.clim(-lim,lim) self.gcm.mp.text(70,60,'Difference, sinks-sources') if 'mycolor' in sys.modules: mycolor.freecbar([0.2,0.12,0.6,0.025],[-lim,-lim/2,0,lim/2,lim], cmap=GBRY()) pl.savefig('data/numreg_%03i.pdf' % maxdays)