## Re: [Matplotlib-users] Fitting math functions to histograms

 Re: [Matplotlib-users] Fitting math functions to histograms From: John Hunter - 2009-12-01 03:22:53 ```On Mon, Nov 30, 2009 at 6:44 PM, William Carithers wrote: > I would like to fit a gaussian to a histogram and then overplot it. I can > write the code to do this but most plotting packages support such fitting. > However I can't find it for pyplot even after scanning documentation, > googling, etc. In fact, the only fitting functionality I could find was the > polynomial fitting for numpy that is layered underneath matplotlib, i.e. > Numpy.polyfit(...). > > Does anyone know if/how this might be built into matplotlib? For a Gaussian distribution, the best fit is provided by the normal distribution which has the same mean and stddev as your empirical data (this is not true in general for other distributions). Once you have the mean and stddev from the data, you can use normpdf to plot the analytic density -- see for example http://matplotlib.sourceforge.net/search.html?q=normpdf For more powerful density fitting and sampling, see scipy.stats functions, eg scipy.stats.norm.fit JDH ```

### Thread view

 [Matplotlib-users] Fitting math functions to histograms From: William Carithers - 2009-12-01 00:45:00 ```I would like to fit a gaussian to a histogram and then overplot it. I can write the code to do this but most plotting packages support such fitting. However I can't find it for pyplot even after scanning documentation, googling, etc. In fact, the only fitting functionality I could find was the polynomial fitting for numpy that is layered underneath matplotlib, i.e. Numpy.polyfit(...). Does anyone know if/how this might be built into matplotlib? Thanks, Bill ```
 Re: [Matplotlib-users] Fitting math functions to histograms From: John Hunter - 2009-12-01 03:22:53 ```On Mon, Nov 30, 2009 at 6:44 PM, William Carithers wrote: > I would like to fit a gaussian to a histogram and then overplot it. I can > write the code to do this but most plotting packages support such fitting. > However I can't find it for pyplot even after scanning documentation, > googling, etc. In fact, the only fitting functionality I could find was the > polynomial fitting for numpy that is layered underneath matplotlib, i.e. > Numpy.polyfit(...). > > Does anyone know if/how this might be built into matplotlib? For a Gaussian distribution, the best fit is provided by the normal distribution which has the same mean and stddev as your empirical data (this is not true in general for other distributions). Once you have the mean and stddev from the data, you can use normpdf to plot the analytic density -- see for example http://matplotlib.sourceforge.net/search.html?q=normpdf For more powerful density fitting and sampling, see scipy.stats functions, eg scipy.stats.norm.fit JDH ```
 Re: [Matplotlib-users] Fitting math functions to histograms From: William Carithers - 2009-12-01 03:46:53 ```Hi John, Yes, that is true if the data is truly gaussian. In my case, I know that the data have non-gaussian tails which tend to dominate the calculation of the standard deviation. I should have been clearer in my post that what I actually wanted to do was fit a gaussian to the truncated "central" part of the distribution so that I was not so sensitive to the tails. A better statement of the problem is that I would like to fit a gaussian to the part of the data that I suspect is actually gaussian while ignoring the part that isn't. Unfortunately, if I calculate the standard deviation for the truncated distribution, then I will underestimate the "sigma" parameter of the gaussian needed to get a good fit. I'll take at the scipy.stats.norm . Thanks for your help. Bill On 11/30/09 7:22 PM, "John Hunter" wrote: > On Mon, Nov 30, 2009 at 6:44 PM, William Carithers > wrote: >> I would like to fit a gaussian to a histogram and then overplot it. I can >> write the code to do this but most plotting packages support such fitting. >> However I can't find it for pyplot even after scanning documentation, >> googling, etc. In fact, the only fitting functionality I could find was the >> polynomial fitting for numpy that is layered underneath matplotlib, i.e. >> Numpy.polyfit(...). >> >> Does anyone know if/how this might be built into matplotlib? > > For a Gaussian distribution, the best fit is provided by the normal > distribution which has the same mean and stddev as your empirical data > (this is not true in general for other distributions). Once you have > the mean and stddev from the data, you can use normpdf to plot the > analytic density -- see for example > > http://matplotlib.sourceforge.net/search.html?q=normpdf > > For more powerful density fitting and sampling, see scipy.stats > functions, eg scipy.stats.norm.fit > > JDH ```