Plot Normal distribution with Matplotlib

后端 未结 2 1458
终归单人心
终归单人心 2020-12-07 10:02

please help me to plot the normal distribution of the folowing data:

DATA:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import         


        
相关标签:
2条回答
  • 2020-12-07 10:49

    Assuming you're getting norm from scipy.stats, you probably just need to sort your list:

    import numpy as np
    import scipy.stats as stats
    import matplotlib.pyplot as plt
    
    h = [186, 176, 158, 180, 186, 168, 168, 164, 178, 170, 189, 195, 172,
         187, 180, 186, 185, 168, 179, 178, 183, 179, 170, 175, 186, 159,
         161, 178, 175, 185, 175, 162, 173, 172, 177, 175, 172, 177, 180]
    h.sort()
    hmean = np.mean(h)
    hstd = np.std(h)
    pdf = stats.norm.pdf(h, hmean, hstd)
    plt.plot(h, pdf) # including h here is crucial
    

    And so I get: enter image description here

    0 讨论(0)
  • 2020-12-07 10:55

    Note: This solution is using pylab, not matplotlib.pyplot

    You may try using hist to put your data info along with the fitted curve as below:

    import numpy as np
    import scipy.stats as stats
    import pylab as pl
    
    h = sorted([186, 176, 158, 180, 186, 168, 168, 164, 178, 170, 189, 195, 172,
         187, 180, 186, 185, 168, 179, 178, 183, 179, 170, 175, 186, 159,
         161, 178, 175, 185, 175, 162, 173, 172, 177, 175, 172, 177, 180])  #sorted
    
    fit = stats.norm.pdf(h, np.mean(h), np.std(h))  #this is a fitting indeed
    
    pl.plot(h,fit,'-o')
    
    pl.hist(h,normed=True)      #use this to draw histogram of your data
    
    pl.show()                   #use may also need add this 
    

    enter image description here

    0 讨论(0)
提交回复
热议问题