Та же высота ГИСТОГРАММЫ и ДРУГАЯ кривая Гаусса, не связанная с данными гистограммы

#python #histogram #gaussian #curve

#python #гистограмма #гауссовская #кривая

Вопрос:

У меня есть одни данные примерно такого рода, но с 1000 точками: дроби = [ 85,86,78,89,73,80,85,79,……83] ( мы могли бы предположить 1000 случайных точек между (70,90)

(редактировать: я хочу, чтобы максимальная высота гауссовой кривой совпадала с максимальной высотой гистограммы.)

И я хочу сравнить это с кривой гаусса, заданной

 def quasars_gaussian_curve(mu= 45,sigma=0.35):

    x = np.linspace(mu - 3*sigma, mu   3*sigma, 100)
    plt.plot(x, stats.norm.pdf(x, mu, sigma)
  

Итак, когда я делаю это:
quasars_gaussian_curve (mu, сигма))

 plt.hist(fraction,density = 1) 
plt.show()
  

Я получаю это :

! [Гистограмма против гауссовской: мне нужно, чтобы гауссовская имела ту же высоту, что и моя гистограмма]https://imgur.com/hqrnfCH

Комментарии:

1. normed=True в plt.hist

2. normed был снижен до ‘density’, и я использовал это в своем примере тоже.

3. Извините, позвольте мне перефразировать мой вопрос. Я хочу, чтобы максимальная высота гауссова была такой же, как у гистограммы.

Ответ №1:

ОК. Итак, есть этот пакет astropy для Python. Не знал, что у него есть этот класс Gaussian1D в astro fitting and modeling. Если кто-то сталкивается с такими же проблемами, даже если это не астрономия, и хочет подогнать кривую Гаусса к их заданной амплитуде, среднему значению и стандартному отклонению, это, вероятно, идеальное решение. И, вероятно, самый короткий

Вот как я это сделал.

 from astropy.modeling.models import Gaussian1D

def fit_gaussian_curve():
     g1 = Gaussian1D(0.11,44,0.35 )
     x = np.linspace(44 - 3*0.35, 44   3*0.35, 100)
     plt.plot(x,g1(x))
  

(Максимальная высота гистограммы составляла около 0,11, среднее значение 44 и сигма 0,35)
И вот мой график сейчас. Сравните это с предыдущим, миссия завершена.

!https://imgur.com/MYraeeD Дополнительная информация здесь: http://docs.astropy.org/en/stable/modeling/