Это потому, что plt.plot
строит графики для каждой строки кривой. Это означает, что в соответствии с вашим примером она строит n вертикальных линий, поскольку координаты x равны (bins[i], bins[i])
для всех линий.
Чтобы исправить это, измените строку:
l = plt.plot([bins, bins], [y_A, y_B], 'r--', linewidth=2)
до:
l_A = plt.plot(bins, y_A, 'r--', linewidth=2)
l_B = plt.plot(bins, y_B, 'b--', linewidth=2)
ИЛИ:
l = plt.plot(bins, np.stack([y_A, y_B]).T, '--', lw=2)
EDIT
Чтобы получить более плавные линии, вы можете повторно сэмплировать ячейки следующим образом:
N_resample = 100
bins_resampled = np.linspace(min(bins), max(bins), N_resample)
y_A = mlab.normpdf(bins_resampled, mu_A, sigma_A)
y_B = mlab.normpdf(bins_resampled, mu_B, sigma_B)
l = plt.plot(bins_resampled, np.stack([y_A, y_B]).T, '--', lw=2)