def drawIsochrone(isochrone, **kwargs):
ax = plt.gca()
logger.debug(str(isochrone))
if kwargs.pop('cookie',None):
# Broad cookie cutter
defaults = dict(alpha=0.5, color='0.5', zorder=0,
linewidth=15, linestyle='-')
else:
# Thin lines
defaults = dict(color='k', linestyle='-')
kwargs = dict(defaults.items()+kwargs.items())
isos = isochrone.isochrones if hasattr(isochrone,'isochrones') else [isochrone]
for iso in isos:
iso = copy.deepcopy(iso)
logger.debug(iso.filename)
iso.hb_spread = False
mass_init,mass_pdf,mass_act,mag_1,mag_2 = iso.sample(mass_steps=1e3)
mag = mag_1 + isochrone.distance_modulus
color = mag_1 - mag_2
# Find discontinuities in the color magnitude distributions
dmag = np.fabs(mag[1:]-mag[:-1])
dcolor = np.fabs(color[1:]-color[:-1])
idx = np.where( (dmag>1.0) | (dcolor>0.25))[0]
# +1 to map from difference array to original array
mags = np.split(mag,idx+1)
colors = np.split(color,idx+1)
for i,(c,m) in enumerate(zip(colors,mags)):
msg = '%-4i (%g,%g) -- (%g,%g)'%(i,m[0],c[0],m[-1],c[-1])
logger.debug(msg)
if i > 0:
kwargs['label'] = None
ax.plot(c,m,**kwargs)
return ax
评论列表
文章目录