def plot_rotcurve_samples(options=None,args=None): """Plot sample rotation curves""" options= set_options(options) params= numpy.random.permutation(load_samples(args[0])) rotcurves= [] rs= numpy.linspace(3.5,16.,1001) add= 0 if options.nooutliermean: add-= 1 if not options.dwarf: add-= 1 for ii in range(options.nsamples): if options.rotcurve.lower() == 'flat': thisrc= params[ii][0]*rs**0.*_REFV0 elif options.rotcurve.lower() == 'powerlaw': thisrc= params[ii][0]*(rs/_REFR0/params[ii][1])**params[ii][6+add]*_REFV0 elif options.rotcurve.lower() == 'linear': thisrc= (params[ii][0]+params[ii][6+add]*(rs/_REFR0/params[ii][1]-1.))*_REFV0 elif options.rotcurve.lower() == 'quadratic': thisrc= (params[ii][0]+params[ii][6+add]*(rs/_REFR0/params[ii][1]-1.)+params[ii][7+add]*(rs/_REFR0/params[ii][1]-1)**2.)*_REFV0 elif options.rotcurve.lower() == 'cubic': thisrc= (params[ii][0]+params[ii][6+add]*(rs/_REFR0/params[ii][1]-1)+params[ii][7+add]*(rs/_REFR0/params[ii][1]-1.)**2.+params[ii][8+add]*(rs/_REFR0/params[ii][1]-1.)**3.)*_REFV0 rotcurves.append(thisrc) bovy_plot.bovy_print(fig_width=8.) ii= 0 bovy_plot.bovy_plot(rs,rotcurves[ii],'-',color='0.65', xlabel=r'$R\ [\mathrm{kpc}]$', ylabel=r'$V_c\ [\mathrm{km\ s}^{-1}]$', xrange=[0.,20.], yrange=[150.,300.]) for ii in range(1,options.nsamples): bovy_plot.bovy_plot(rs,rotcurves[ii],'-',color='0.65',overplot=True,alpha=0.1) if _PLOTM31: #Read file m31data= numpy.loadtxt('../data/m31.dat',comments='#') rm31= m31data[:,0] vcm31= m31data[:,1] bovy_plot.bovy_plot(rm31,vcm31,'ks',overplot=True,mfc='none',mew=2.) bovy_plot.bovy_text(17.,260.,r'$\mathrm{M31}$',size=14.) indx= (rm31 > 15.2)*(rm31 <= 16.8) bovy_plot.bovy_plot([17.,rm31[indx]],[260.,vcm31[indx]],'k-', overplot=True) bovy_plot.bovy_end_print(options.plotfilename) return None
def plot_rotcurve_samples(options=None, args=None): """Plot sample rotation curves""" options = set_options(options) params = numpy.random.permutation(load_samples(args[0])) rotcurves = [] rs = numpy.linspace(3.5, 16., 1001) add = 0 if options.nooutliermean: add -= 1 if not options.dwarf: add -= 1 for ii in range(options.nsamples): if options.rotcurve.lower() == 'flat': thisrc = params[ii][0] * rs**0. * _REFV0 elif options.rotcurve.lower() == 'powerlaw': thisrc = params[ii][0] * ( rs / _REFR0 / params[ii][1])**params[ii][6 + add] * _REFV0 elif options.rotcurve.lower() == 'linear': thisrc = (params[ii][0] + params[ii][6 + add] * (rs / _REFR0 / params[ii][1] - 1.)) * _REFV0 elif options.rotcurve.lower() == 'quadratic': thisrc = (params[ii][0] + params[ii][6 + add] * (rs / _REFR0 / params[ii][1] - 1.) + params[ii][7 + add] * (rs / _REFR0 / params[ii][1] - 1)**2.) * _REFV0 elif options.rotcurve.lower() == 'cubic': thisrc = (params[ii][0] + params[ii][6 + add] * (rs / _REFR0 / params[ii][1] - 1) + params[ii][7 + add] * (rs / _REFR0 / params[ii][1] - 1.)**2. + params[ii][8 + add] * (rs / _REFR0 / params[ii][1] - 1.)**3.) * _REFV0 rotcurves.append(thisrc) bovy_plot.bovy_print(fig_width=8.) ii = 0 bovy_plot.bovy_plot(rs, rotcurves[ii], '-', color='0.65', xlabel=r'$R\ [\mathrm{kpc}]$', ylabel=r'$V_c\ [\mathrm{km\ s}^{-1}]$', xrange=[0., 20.], yrange=[150., 300.]) for ii in range(1, options.nsamples): bovy_plot.bovy_plot(rs, rotcurves[ii], '-', color='0.65', overplot=True, alpha=0.1) if _PLOTM31: #Read file m31data = numpy.loadtxt('../data/m31.dat', comments='#') rm31 = m31data[:, 0] vcm31 = m31data[:, 1] bovy_plot.bovy_plot(rm31, vcm31, 'ks', overplot=True, mfc='none', mew=2.) bovy_plot.bovy_text(17., 260., r'$\mathrm{M31}$', size=14.) indx = (rm31 > 15.2) * (rm31 <= 16.8) bovy_plot.bovy_plot([17., rm31[indx]], [260., vcm31[indx]], 'k-', overplot=True) bovy_plot.bovy_end_print(options.plotfilename) return None
def plot_rotcurve_samples(options=None,args=None): """Plot sample rotation curves""" options= set_options(options) params= numpy.random.permutation(load_samples(args[0])) if options.removerooutliers: indx= numpy.zeros(len(params),dtype='bool') indx[:]= True for ii in range(len(params)): if params[ii][1] > (9./_REFR0): indx[ii]= False params= params[indx] options.nsamples= numpy.amin([options.nsamples,len(params)]) print len(params) bestfitparams= load_samples(args[1]) rotcurves= [] rs= numpy.linspace(3.5,14.,1001) fs= numpy.zeros((len(rs),options.nsamples)) besfitrc= numpy.zeros_like(rs) add= 0 if options.nooutliermean: add-= 1 if not options.dwarf: add-= 1 if options.rotcurve.lower() == 'flat': bestfitrc= bestfitparams[0]*rs**0.*_REFV0 elif options.rotcurve.lower() == 'powerlaw': bestfitrc= bestfitparams[0]*(rs/_REFR0/bestfitparams[1])**bestfitparams[6+add]*_REFV0 elif options.rotcurve.lower() == 'linear': bestfitrc= (bestfitparams[0]+bestfitparams[6+add]*(rs/_REFR0/bestfitparams[1]-1.))*_REFV0 elif options.rotcurve.lower() == 'quadratic': bestfitrc= (bestfitparams[0]+bestfitparams[6+add]*(rs/_REFR0/bestfitparams[1]-1.)+bestfitparams[7+add]*(rs/_REFR0/bestfitparams[1]-1)**2.)*_REFV0 elif options.rotcurve.lower() == 'cubic': bestfitrc= (bestfitparams[0]+bestfitparams[6+add]*(rs/_REFR0/bestfitparams[1]-1)+bestfitparams[7+add]*(rs/_REFR0/bestfitparams[1]-1.)**2.+bestfitparams[8+add]*(rs/_REFR0/bestfitparams[1]-1.)**3.)*_REFV0 for ii in range(options.nsamples): if options.rotcurve.lower() == 'flat': thisrc= params[ii][0]*rs**0.*_REFV0 elif options.rotcurve.lower() == 'powerlaw': thisrc= params[ii][0]*(rs/_REFR0/params[ii][1])**params[ii][6+add]*_REFV0 elif options.rotcurve.lower() == 'linear': thisrc= (params[ii][0]+params[ii][6+add]*(rs/_REFR0/params[ii][1]-1.))*_REFV0 elif options.rotcurve.lower() == 'quadratic': thisrc= (params[ii][0]+params[ii][6+add]*(rs/_REFR0/params[ii][1]-1.)+params[ii][7+add]*(rs/_REFR0/params[ii][1]-1)**2.)*_REFV0 elif options.rotcurve.lower() == 'cubic': thisrc= (params[ii][0]+params[ii][6+add]*(rs/_REFR0/params[ii][1]-1)+params[ii][7+add]*(rs/_REFR0/params[ii][1]-1.)**2.+params[ii][8+add]*(rs/_REFR0/params[ii][1]-1.)**3.)*_REFV0 fs[:,ii]= thisrc #Now plot the mean and std-dev from the posterior rcmean= numpy.zeros(len(rs)) nsigs= 3 rcsigs= numpy.zeros((len(rs),2*nsigs)) #Record mean and std-devs rcmean[:]= numpy.mean(fs,axis=1) bovy_plot.bovy_print(fig_width=8.) bovy_plot.bovy_plot(rs,bestfitrc,'k-', xlabel=r'$R\ [\mathrm{kpc}]$', ylabel=r'$V_c\ [\mathrm{km\ s}^{-1}]$', xrange=[0.,20.], yrange=[150.,300.]) for ii in range(nsigs): for jj in range(len(rs)): thisf= sorted(fs[jj,:]) thiscut= 0.5*special.erfc((ii+1.)/math.sqrt(2.)) rcsigs[jj,2*ii]= thisf[int(math.floor(thiscut*options.nsamples))] thiscut= 1.-thiscut rcsigs[jj,2*ii+1]= thisf[int(math.floor(thiscut*options.nsamples))] colord, cc= (1.-0.75)/(nsigs+1.), 1 nsigma= nsigs pyplot.fill_between(rs,rcsigs[:,0],rcsigs[:,1],color='0.75') while nsigma > 1: pyplot.fill_between(rs,rcsigs[:,cc+1],rcsigs[:,cc-1], color='%f' % (.75+colord*cc)) pyplot.fill_between(rs,rcsigs[:,cc],rcsigs[:,cc+2], color='%f' % (.75+colord*cc)) cc+= 2 nsigma-= 1 bovy_plot.bovy_plot(rs,bestfitrc,'k-',overplot=True) if options.plotm31: #Read file m31data= numpy.loadtxt('../data/m31.dat',comments='#') rm31= m31data[:,0] vcm31= m31data[:,1] bovy_plot.bovy_plot(rm31,vcm31,'ks',overplot=True,mfc='none',mew=2.) bovy_plot.bovy_text(17.,260.,r'$\mathrm{M31}$',size=14.) indx= (rm31 > 15.2)*(rm31 <= 16.8) bovy_plot.bovy_plot([17.,rm31[indx]],[260.,vcm31[indx]],'k-', overplot=True) #Labels if options.rotcurve.lower() == 'flat': print "This is silly" elif options.rotcurve.lower() == 'powerlaw': bovy_plot.bovy_text(r'$\mathrm{Power\!\!-\!\!law\ rotation\ curve\ model}$', top_left=True,size=16.) elif options.rotcurve.lower() == 'linear': bovy_plot.bovy_text(r'$\mathrm{Linearly rising\ rotation\ curve\ model}$', top_left=True,size=16.) elif options.rotcurve.lower() == 'quadratic': bovy_plot.bovy_text(r'$\mathrm{Quadratic polynomial\ rotation\ curve\ model}$', top_left=True,size=16.) elif options.rotcurve.lower() == 'cubic': bovy_plot.bovy_text(r'$\mathrm{Cubic\ polynomial\ rotation\ curve\ model}$', top_left=True,size=16.) if options.removerooutliers: bovy_plot.bovy_text(r'$R_0 < 9\,\mathrm{kpc}$', top_right=True,size=16.) if options.addmock2: bovy_plot.bovy_text(r'$\mathrm{Mock\ 2}$', bottom_right=True,size=16.) bovy_plot.bovy_end_print(options.plotfilename) return None