def plot_T(self, k, T, Tc=None, Tb=None): from biggles import FramedPlot, Curve, PlotKey plt=FramedPlot() c=Curve(k, T**2) c.label = '$T^2$' plt.add(c) plist = [c] if Tc is not None: cc=Curve(k,Tc**2,color='blue') cc.label = '$Tc^2$' plt.add(cc) plist.append(cc) if Tb is not None: tmp = where(Tb < 1.e-5, 1.e-5, Tb) cb=Curve(k,tmp**2,color='red') cb.label = '$Tb^2$' plt.add(cb) plist.append(cb) plt.xlog=True plt.ylog=True plt.ylabel = '$T^2' plt.xlabel = 'k' plt.yrange = [1.e-8,1.0] plt.aspect_ratio=1 if Tc is not None or Tb is not None: key=PlotKey(0.1,0.9,plist) plt.add(key) plt.show()
def plot_pk(self,k,pk): from biggles import FramedPlot, Curve plt=FramedPlot() plt.add(Curve(k,pk)) plt.xlog=True plt.ylog=True plt.xlabel = r'$k [h/Mpc]$' plt.ylabel = r'$P_{lin}(k)$' plt.aspect_ratio = 1 plt.show()
def make_plot(self): bindata=self.bindata bin_field=self.bin_field plt=FramedPlot() plt.uniform_limits=1 plt.xlog=True #plt.xrange=[0.5*bindata[bin_field].min(), 1.5*bindata[bin_field].max()] plt.xrange=self.s2n_range plt.xlabel=bin_field plt.ylabel = r'$\gamma$' if self.yrange is not None: plt.yrange=self.yrange xdata=bindata[bin_field] xerr=bindata[bin_field+'_err'] if self.shnum in sh1exp: g1exp=zeros(xdata.size)+sh1exp[self.shnum] g2exp=zeros(xdata.size)+sh2exp[self.shnum] g1exp_plt=Curve(xdata, g1exp) g2exp_plt=Curve(xdata, g2exp) plt.add(g1exp_plt) plt.add(g2exp_plt) xerrpts1 = SymmetricErrorBarsX(xdata, bindata['g1'], xerr) xerrpts2 = SymmetricErrorBarsX(xdata, bindata['g2'], xerr) type='filled circle' g1color='blue' g2color='red' g1pts = Points(xdata, bindata['g1'], type=type, color=g1color) g1errpts = SymmetricErrorBarsY(xdata, bindata['g1'], bindata['g1_err'], color=g1color) g2pts = Points(xdata, bindata['g2'], type=type, color=g2color) g2errpts = SymmetricErrorBarsY(xdata, bindata['g2'], bindata['g2_err'], color=g2color) g1pts.label=r'$\gamma_1$' g2pts.label=r'$\gamma_2$' key=biggles.PlotKey(0.9,0.5,[g1pts,g2pts],halign='right') plt.add( xerrpts1, g1pts, g1errpts ) plt.add( xerrpts2, g2pts, g2errpts ) plt.add(key) labels=self.get_labels() plt.add(*labels) plt.aspect_ratio=1 self.plt=plt
def plot_dsig_one(r, dsig, dsigerr, **kw): """ plot delta sigma useful if adding to an existing plot parameters ---------- r: array radius dsig: array delta sigma dsigerr: array error on delta sigma """ from biggles import FramedPlot nbin=1 _set_biggles_defs(nbin) visible=kw.get('visible',True) xlog=kw.get('xlog',True) ylog=kw.get('ylog',True) aspect_ratio=kw.get('aspect_ratio',1) is_ortho=kw.get('is_ortho',False) plt=kw.get('plt',None) if plt is None: plt=FramedPlot() plt.aspect_ratio=aspect_ratio plt.xlog=xlog plt.ylog=ylog plt.xlabel = LABELS['rproj'] if is_ortho: plt.ylabel = LABELS['osig'] else: plt.ylabel = LABELS['dsig'] xrng, yrng = _add_dsig_to_plot(plt, r, dsig, dsigerr, **kw) plt.xrange=xrng plt.yrange=yrng if visible: plt.show() return plt
def plot_boss_geometry(color=None, colorwheel=None, plt=None, width=1, show=True, region=None): """ Plot the boundaries in the boss_survey.par file """ import esutil as eu import biggles from biggles import FramedPlot, Curve bg = read_boss_geometry() if plt is None: plt = FramedPlot() plt.xlabel=r'$\lambda$' plt.ylabel=r'$\eta$' if color is not None: colors = [color]*len(bg) elif colorwheel is not None: colors = colorwheel else: colors = ['red','blue','green','magenta','navyblue','seagreen', 'firebrick','cadetblue','green4'] for i in xrange(len(bg)): b = bg[i] color = colors[i % len(colors)] c = eu.plotting.bbox( b['clambdaMin'], b['clambdaMax'], b['cetaMin'], b['cetaMax'], color=color, width=width) plt.add(c) if region == 'ngc': plt.yrange = [-40.,50.] plt.xrange = [-80.,80.] elif region == 'sgc': plt.yrange = [105.,165.] plt.xrange = [-60.,60.] else: plt.yrange = [-40.,165.] plt.xrange = [-80.,80.] plt.aspect_ratio = (plt.yrange[1]-plt.yrange[0])/(plt.xrange[1]-plt.xrange[0]) if show: plt.show() return plt
def plot_xi(self, r, xi): from biggles import FramedPlot, Curve minval = 1.e-4 xi = where(xi < minval, minval, xi) plt=FramedPlot() plt.add(Curve(r,xi)) plt.xlog=True plt.ylog=True plt.xlabel = r'$r [Mpc/h]$' plt.ylabel = r'$\xi_{lin}(r)$' plt.aspect_ratio=1 plt.show()
def plot_drho(comb=None, r=None, drho=None, drhoerr=None, color='black',type='filled circle', nolabel=False, noshow=False, minval=1.e-5, aspect_ratio=1): """ This one stands alone. """ if comb is not None: r=comb['rdrho'] drho=comb['drho'] drhoerr=comb['drhoerr'] else: if r is None or drho is None or drhoerr is None: raise ValueError("Send a combined struct or r,drho,drhoerr") plt=FramedPlot() plt.aspect_ratio=aspect_ratio plt.xlog=True plt.ylog=True if not nolabel: plt.xlabel = r'$r$ [$h^{-1}$ Mpc]' plt.ylabel = r'$\delta\rho ~ [M_{\odot} pc^{-3}]$' od=add_to_log_plot(plt, r, drho, drhoerr, color=color, type=type, minval=minval) # for drho we need even broader yrange plt.xrange = od['xrange'] yr=od['yrange'] plt.yrange = [0.5*yr[0], 3*yr[1]] if not noshow: plt.show() od['plt'] = plt return od
def plot_mass(comb=None, r=None, mass=None, masserr=None, color='black',type='filled circle', nolabel=False, noshow=False, minval=1.e11, aspect_ratio=1): if comb is not None: r=comb['rmass'] mass=comb['mass'] masserr=comb['masserr'] else: if r is None or mass is None or masserr is None: raise ValueError("Send a combined struct or r,mass,masserr") plt=FramedPlot() plt.aspect_ratio=aspect_ratio plt.xlog=True plt.ylog=True if not nolabel: plt.xlabel = r'$r$ [$h^{-1}$ Mpc]' plt.ylabel = r'$M(<r) ~ [h^{-1} M_{\odot}]$' od=add_to_log_plot(plt, r, mass, masserr, color=color, type=type, minval=minval) plt.xrange = od['xrange'] plt.yrange = od['yrange'] if not noshow: plt.show() od['plt'] = plt return od
def plot_dsig(**keys): """ This one stands alone. """ comb=keys.get('comb',None) r=keys.get('r',None) dsig=keys.get('dsig',None) dsigerr=keys.get('dsigerr',None) color=keys.get('color','black') type=keys.get('type','filled circle') nolabel=keys.get('nolabel',False) show=keys.get('show',True) minval=keys.get('minval',1.e-3) xlog=keys.get('xlog',True) ylog=keys.get('ylog',True) aspect_ratio=keys.get('aspect_ratio',1) plt=keys.get('plt',None) label=keys.get('label',None) if comb is not None: r=comb['r'] dsig=comb['dsig'] dsigerr=comb['dsigerr'] else: if r is None or dsig is None or dsigerr is None: raise ValueError("Send a combined struct or r,dsig,dsigerr") if plt is None: plt=FramedPlot() plt.aspect_ratio=aspect_ratio plt.xlog=xlog plt.ylog=ylog if not nolabel: plt.xlabel = labels['rproj'] plt.ylabel = labels['dsig'] if ylog: od=add_to_log_plot(plt, r, dsig, dsigerr, color=color, type=type, minval=minval) plt.xrange = od['xrange'] plt.yrange = od['yrange'] if label: od['p'].label=label else: zpts=Curve(r, dsig*0) plt.add(zpts) pts=Points(r, dsig, type=type, color=color) if label: pts.label=label plt.add(pts) if dsigerr is not None: epts=SymErrY(r, dsig, dsigerr, color=color) plt.add(epts) yrng=keys.get('yrange',None) xrng=keys.get('xrange',None) if yrng: plt.yrange=yrng if xrng: plt.xrange=xrng else: if xlog: plt.xrange=eu.plotting.get_log_plot_range(r) if show: plt.show() if ylog: od['plt'] = plt return od else: return plt
def plot_coverage(self, region='both', show=True, dops=True): import biggles from biggles import FramedPlot, Points, PlotKey l = self.read() w,=numpy.where( (l['ra'] >= 0.0) & (l['ra'] <= 360.0) ) if w.size != l.size: print("threw out",l.size-w.size,"with bad ra") l=l[w] llam,leta = eu.coords.eq2sdss(l['ra'],l['dec']) maskflags = l['maskflags'] lammin,lammax = (-70.,70.) if region=='ngc': # a bit high to make room for the legend emin,emax=(-40,60) biggles.configure('screen','width', 1800) biggles.configure('screen','height', 1140) elif region=='sgc': emin,emax=(100,165) biggles.configure('screen','width', 1800) biggles.configure('screen','height', 1140) else: emin,emax=(-40,165) biggles.configure('screen','width', 1140) biggles.configure('screen','height', 1140) wl=where1((leta > emin) & (leta < emax)) llam=llam[wl] leta=leta[wl] maskflags=maskflags[wl] plt=FramedPlot() plt.xlabel=r'$\lambda$' plt.ylabel=r'$\eta$' print("adding all lenses") type = 'filled circle' symsize=0.2 allp = Points(llam,leta,type=type,size=symsize) allp.label='all' plt.add(allp) wquad = es_sdsspy.stomp_maps.quad_check(maskflags) print("adding quad pass") quadp = Points(llam[wquad],leta[wquad],type=type,color='red',size=symsize) quadp.label = 'quad good' plt.add(quadp) fakepoints = eu.plotting.fake_filled_circles(['all','quad good'],['black','red']) key=PlotKey(0.95,0.95,fakepoints,halign='right') plt.add(key) es_sdsspy.stomp_maps.plot_boss_geometry(color='blue',plt=plt,show=False) xrng = (lammin, lammax) yrng = (emin, emax) plt.xrange = xrng plt.yrange = yrng plt.aspect_ratio = (yrng[1]-yrng[0])/float(xrng[1]-xrng[0]) if show: plt.show() if dops: d = lensing.files.sample_dir(type='lcat',sample=self['sample']) d = os.path.join(d,'plots') if not os.path.exists(d): os.makedirs(d) epsfile = os.path.join(d, 'lcat-%s-%s-coverage.eps' % (self['sample'],region) ) print("Writing to eps file:",epsfile) plt.write_eps(epsfile) return plt
def plot_coverage_bybin(self, binner, region='both', show=True, dops=True, rand=None): import pcolors import biggles import converter from biggles import FramedPlot, Points, PlotKey orig = self.read_original() lcat = self.read() all_clam,all_ceta = eu.coords.eq2sdss(orig['ra'],orig['dec']) l = orig[lcat['zindex']] clam,ceta = eu.coords.eq2sdss(lcat['ra'],lcat['dec']) clammin,clammax = (-70.,120.) if region=='ngc': # a bit high to make room for the legend emin,emax=(-40,60) biggles.configure('screen','width', 1800) biggles.configure('screen','height', 1140) clammin,clammax = (-70.,120.) elif region=='sgc': emin,emax=(105,165) biggles.configure('screen','width', 1800) biggles.configure('screen','height', 1140) clammin,clammax = (-50.,90.) else: emin,emax=(-40,165) biggles.configure('screen','width', 1140) biggles.configure('screen','height', 1140) clammin,clammax = (-70.,120.) wl=where1((all_ceta > emin) & (all_ceta < emax)) all_clam=all_clam[wl] all_ceta=all_ceta[wl] wl=where1((ceta > emin) & (ceta < emax)) clam=clam[wl] ceta=ceta[wl] l=l[wl] plt=FramedPlot() plt.xlabel=r'$\lambda$' plt.ylabel=r'$\eta$' xrng = (clammin, clammax) yrng = (emin, emax) plt.xrange = xrng plt.yrange = yrng print("adding all lenses") type = 'filled circle' symsize=0.2 colors = pcolors.rainbow(binner['nbin'],'hex') if rand is not None: clam_r,ceta_r = eu.coords.eq2sdss(rand['ra'],rand['dec']) wl=where1((ceta_r > emin) & (ceta_r < emax)) clam_r=clam_r[wl] ceta_r=ceta_r[wl] rp = Points(clam_r, ceta_r, type='dot', size=0.2) plt.add(rp) size_min=0.2 size_max=4 sizes=[] minlambda = l['lambda_zred'].min() maxlambda = l['lambda_zred'].max() for i in xrange(binner['nbin']): w=binner.select_bin(l, i) mlam=l['lambda_zred'][w].mean() # scale 0 to 1 sz=(mlam-minlambda)/maxlambda # now scale size sz = size_min + sz*(size_max-size_min) sizes.append(sz) all_plots=[] labels=[] #for i in xrange(binner['nbin']): for i in reversed(xrange(binner['nbin'])): w=binner.select_bin(l, i) #points = Points(clam[w], ceta[w],type=type,size=symsize, color=colors[i]) points = Points(clam[w], ceta[w],type=type,size=sizes[i], color=colors[i]) labels.append(binner.bin_label(i)) plt.add(points) labels.reverse() fakepoints = eu.plotting.fake_filled_circles(labels, colors) key=PlotKey(0.95,0.95,fakepoints,halign='right',size=1.5) plt.add(key) plt.aspect_ratio = (yrng[1]-yrng[0])/float(xrng[1]-xrng[0]) es_sdsspy.stomp_maps.plot_boss_geometry(color='blue',plt=plt,show=False) if show: plt.show() if dops: d = lensing.files.sample_dir(type='lcat',sample=self['sample']) d = os.path.join(d,'plots') if not os.path.exists(d): os.makedirs(d) epsfile = os.path.join(d, 'lcat-%s-coverage-bybin.eps' % self['sample']) if rand is not None: epsfile=epsfile.replace('.eps','-withrand.eps') if region in ['sgc','ngc']: epsfile=epsfile.replace('.eps','-%s.eps' % region) print("Writing to eps file:",epsfile) plt.write_eps(epsfile) print("converting to png") converter.convert(epsfile, dpi=300) return plt
def plot_coverage(self, region='both', show=True, dops=True): """ Plot a random subset of the randoms along with the boss survey geometry area as bounding boxes """ import biggles from biggles import FramedPlot, Points, PlotKey symsize=0.5 l = self.read() llam,leta = eu.coords.eq2sdss(l['ra'],l['dec']) lammin,lammax = (-70.,70.) if region=='ngc': # a bit high to make room for the legend emin,emax=(-40,60) biggles.configure('screen','width', 1800) biggles.configure('screen','height', 1140) width=1.5 elif region=='sgc': emin,emax=(125,165) biggles.configure('screen','width', 1800) biggles.configure('screen','height', 1140) width=2 else: emin,emax=(-40,165) biggles.configure('screen','width', 1140) biggles.configure('screen','height', 1140) width=2 wl=where1((leta > emin) & (leta < emax)) llam=llam[wl] leta=leta[wl] plt=FramedPlot() plt.xlabel=r'$\lambda$' plt.ylabel=r'$\eta$' xrng = (lammin, lammax) yrng = (emin, emax) plt.xrange = xrng plt.yrange = yrng print("adding random subset of randoms") ii = eu.numpy_util.random_subset(llam.size, 500000) allp = Points(llam[ii],leta[ii],type='dot',size=symsize) plt.add(allp) plt.aspect_ratio = (yrng[1]-yrng[0])/float(xrng[1]-xrng[0]) #es_sdsspy.stomp_maps.plot_boss_geometry(color='blue',plt=plt,show=False) es_sdsspy.stomp_maps.plot_boss_geometry(plt=plt,show=False,width=width) if show: plt.show() if dops: d = lensing.files.sample_dir(type='lcat',sample=self['sample']) d = os.path.join(d,'plots') if not os.path.exists(d): os.makedirs(d) epsfile = os.path.join(d, '%s-%s-coverage.eps' % ('lcat',self['sample'])) print("Writing to eps file:",epsfile) plt.write_eps(epsfile) return plt
def main(): options,args = parser.parse_args(sys.argv[1:]) if len(args) < 3: parser.print_help() sys.exit(1) run1 = args[0] run2 = args[1] bintype = args[2] rrange=options.rrange if rrange is not None: rrange=[float(r) for r in rrange.split(',')] biggles.configure('screen','width', 1400) biggles.configure('default','fontsize_min',1.0) b = lensing.binning.instantiate_binner(bintype) name=b.get_name() data1 = lensing.files.sample_read(type=options.type, sample=run1, name=name) data2 = lensing.files.sample_read(type=options.type, sample=run2, name=name) nbin=data1.size tab=Table(1,2) for i in xrange(nbin): tab[0,0] = plot2dsig_over( data1['r'][i],data1['dsig'][i],data1['dsigerr'][i], data2['r'][i],data2['dsig'][i],data2['dsigerr'][i], label1=run1,label2=run2,label=b.bin_label(i), show=False) tab[0,0].aspect_ratio=1 pbot = FramedPlot() rat=data1['dsig'][i]/data2['dsig'][i] raterr = rat*numpy.sqrt( (data1['dsigerr'][i]/data1['dsig'][i])**2 +(data2['dsigerr'][i]/data2['dsig'][i])**2 ) rpts=Points(data1['r'][i], rat, type='filled circle',color='blue') rerr=SymErrY(data1['r'][i], rat, raterr,color='blue') if rrange is None: rat_use,raterr_use=rat,raterr else: w,=numpy.where( (data1['r'][i] > rrange[0]) & (data1['r'][i] < rrange[1])) rat_use,raterr_use=rat[w],raterr[w] mn,err = eu.stat.wmom(rat_use, 1/raterr_use**2, calcerr=True) plot_rrange=[0.5*data1['r'][i].min(),data1['r'][i].max()*2] z=Curve(plot_rrange, [1,1]) pbot.add(rpts,rerr,z) pbot.xlog=True pbot.xlabel = lensing.plotting.labels['rproj'] pbot.ylabel = '%s/%s' % (run1,run2) pbot.yrange=[0,2] pbot.xrange = plot_rrange pbot.aspect_ratio=1 lab='<ratio>' if rrange is not None: lab = r'$%s r \in [%.2f,%.2f]$' % (lab,rrange[0],rrange[1]) lab='%s: %0.2f +/- %0.2f' % (lab,mn,err) pbot.add(PlotLabel(0.9,0.9,lab,halign='right')) tab[0,1] = pbot tab.show() epsfile=lensing.files.sample_file(type='binned-plots', sample=run1, name=name, extra='compare-%s-%02d' % (run2,i), ext='eps') print("writing:",epsfile) tab.write_eps(epsfile) if nbin > 1: key=raw_input('hit a key: ') if key.lower() == 'q': return
def plot_nfw_lin_fits_byrun(run, name, npts=100, prompt=False, withlin=True, ymin=0.01, ymax=2000.0): """ This should be made not specific for the m-z splits we used on the sims """ conf = lensing.files.cascade_config(run) if withlin: ex='lin' nex='lin' else: nex='' ex='' d = lensing.sample_read(type='fit',sample=run, name=name, extra=ex) omega_m = conf['cosmo_config']['omega_m'] rravel = d['r'].ravel() xrange = [0.5*rravel.min(), 1.5*rravel.max()] #for i in xrange(d.size): i=0 for dd in d: zrange = dd['z_range'] mrange = dd['m200_range'] if dd['rrange'][0] > 0: log_rmin = log10(dd['rrange'][0]) log_rmax = log10(dd['rrange'][1]) else: log_rmin = log10(dd['r'][0]) log_rmax = log10(dd['r'][-1]) rvals = 10.0**linspace(log_rmin,log_rmax,npts) plt = FramedPlot() lensing.plotting.add_to_log_plot(plt, dd['r'],dd['dsig'],dd['dsigerr']) z = dd['z_mean'] fitter = lensing.fit.NFWBiasFitter(omega_m,z,rvals,withlin=withlin) if withlin: yfit = fitter.nfw_lin_dsig(rvals, dd['r200_fit'],dd['c_fit'],dd['B_fit']) yfit_nfw = fitter.nfw.dsig(rvals,dd['r200_fit'],dd['c_fit']) yfit_lin = fitter.lin_dsig(rvals,dd['B_fit']) yfit = where(yfit < 1.e-5, 1.e-5, yfit) yfit_lin = where(yfit_lin < 1.e-5, 1.e-5, yfit_lin) cyfit = Curve(rvals,yfit,color='blue') cyfit_nfw = Curve(rvals,yfit_nfw,color='red') cyfit_lin = Curve(rvals,yfit_lin,color='orange') cyfit.label = 'Best Fit' cyfit_nfw.label = 'NFW' cyfit_lin.label = 'linear' key=PlotKey(0.1,0.3,[cyfit,cyfit_nfw,cyfit_lin]) plt.add(cyfit,cyfit_nfw,cyfit_lin,key) else: yfit_nfw = fitter.nfw.dsig(rvals,dd['r200_fit'],dd['c_fit']) cyfit_nfw = Curve(rvals,yfit_nfw,color='blue') plt.add(cyfit_nfw) zlab='%0.2f < z < %0.2f' % (zrange[0],zrange[1]) plt.add(PlotLabel(0.7,0.8,zlab)) ll = (log10(mrange[0]),log10(mrange[1])) mlab = r'$%0.2f < logM_{200} < %0.2f$' % ll plt.add(PlotLabel(0.7,0.9,mlab)) #yrange = [ymin,(dd['dsig']+dd['dsigerr']).max()*1.5] yrange = [ymin,ymax] plt.xrange = xrange plt.yrange = yrange plt.xlog=True plt.ylog=True plt.xlabel = r'$r$ [$h^{-1}$ Mpc]' plt.ylabel = r'$\Delta\Sigma ~ [M_{sun} pc^{-2}]$' plt.aspect_ratio=1 if prompt: plt.show() rinput = raw_input('hit a key: ') if rinput == 'q': return else: d = lensing.files.lensbin_plot_dir(run,name) if not os.path.exists(d): os.makedirs(d) epsfile=path_join(d,'desmocks-nfw%s-fit-%02i.eps' % (nex,i)) print 'Writing epsfile:',epsfile plt.write_eps(epsfile) i += 1