def plot_rc_alpha(ax, snr150=False):
nbins_x = 30
nbins_y = 40
ind = indrc
if snr150:
ind = ind_snr150
H, xedges, yedges = np.histogram2d(metals[ind], alphafe[ind],
bins=(nbins_x, nbins_y), normed=True)
x_bin_sizes = (xedges[1:] - xedges[:-1]).reshape((1, nbins_x))
y_bin_sizes = (yedges[1:] - yedges[:-1]).reshape((nbins_y, 1))
pdf = (H * np.multiply(x_bin_sizes, y_bin_sizes).T)
sig05 = optimize.brentq(find_confidence_interval, 0., 1., args=(pdf, 0.38))
sig1 = optimize.brentq(find_confidence_interval, 0., 1., args=(pdf, 0.68))
sig2 = optimize.brentq(find_confidence_interval, 0., 1., args=(pdf, 0.95))
sig3 = optimize.brentq(find_confidence_interval, 0., 1., args=(pdf, 0.99))
levels = [sig1, sig05, 1.]
X = 0.5 * (xedges[1:] + xedges[:-1])
Y = 0.5 * (yedges[1:] + yedges[:-1])
Z = pdf.T
ax.contourf(X, Y, Z, levels=levels, origin='lower',
colors=('darkgray', 'gray'), zorder=9)
ax.contour(X, Y, Z, levels=[levels[0], levels[1]], origin='lower',
colors='k', zorder=10)
for i in range(nbins_x):
for j in range(nbins_y):
if Z[j, i] <= sig1 * 1.2:
ind_tmp0 = np.where(
(metals >= xedges[i]) & (metals < xedges[i+1]) &
(alphafe >= yedges[j]) & (alphafe < yedges[j+1]))[0]
ind_tmp = np.intersect1d(ind, ind_tmp0)
if len(ind_tmp > 0):
ax.scatter(metals[ind_tmp], alphafe[ind_tmp], c='k', s=5)
评论列表
文章目录