def plot_param_distributions(p, nsamples=1000): from radd import theta pkeys = np.sort(list(p)) nparams = pkeys.size p_dists = theta.random_inits(pkeys=pkeys, ninits=nsamples) clrs = colors.param_color_map() lbls = {pk: parameter_name(pk,True) for pk in pkeys} ncols = np.ceil(nparams/2.).astype(int) fig, axes = plt.subplots(2, ncols, figsize=(10,5)) axes = axes.flatten() for i, pk in enumerate(pkeys): sns.distplot(p_dists[pk], label=lbls[pk], color=clrs[pk], ax=axes[i]) for ax in axes: ax.legend(loc=0, fontsize=16) plt.tight_layout() sns.despine()
def plot_model_gof(gof_dict, aicwinner, models=None): sns.set(style='darkgrid', rc={'figure.facecolor':'white'}, font_scale=1.5) if models is None: models = np.sort(list(gof_dict)) nmodels = len(models) f, ax = plt.subplots(1, figsize=(8,6)) x = np.arange(1, nmodels*2, 2) clrs = colors.param_color_map() lbls = {m_id: parameter_name(m_id,True) for m_id in models} for i, m_id in enumerate(models): yaic, ybic = gof_dict[m_id][['AIC', 'BIC']] lbl = lbls[m_id] if m_id==aicwinner: lbl+='*' ax.bar(x[i]-.25, yaic, color=clrs[m_id], width=.5, align='center', edgecolor=clrs[m_id], label=lbl) ax.bar(x[i]+.25, ybic, color=clrs[m_id], alpha=.7, width=.5, align='center', edgecolor=clrs[m_id]) vals = np.hstack(gof_dict.values()).astype(float) yylim = (vals.max()*.95, vals.min()*1.05) plt.setp(ax, xticks=x, ylim=yylim, xlim=(0, x[-1]+1), ylabel='IC') ax.set_xticklabels(['AIC | BIC']*nmodels, fontsize=18) ax.invert_yaxis() sns.despine() ax.legend(loc=0, fontsize=22)