# Tracer une loi normale (gaussienne) avec le module matplotlib de python

Exemple de comment calculer et tracer une loi normale (ou loi gaussienne) avec python et matplotlib en utilisant le module stats de scipy:

````from scipy.integrate import quad`

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

`x_min = 0.0`
`x_max = 16.0`

`mean = 8.0 `
`std = 2.0`

`x = np.linspace(x_min, x_max, 100)`

`y = scipy.stats.norm.pdf(x,mean,std)`

`plt.plot(x,y, color='coral')`

`plt.grid()`

`plt.xlim(x_min,x_max)`
`plt.ylim(0,0.25)`

`plt.title('How to plot a normal distribution in python with matplotlib',fontsize=10)`

`plt.xlabel('x')`
`plt.ylabel('Normal Distribution')`

`plt.savefig("normal_distribution.png")`
`plt.show()`
```

Un autre exemple:

````from scipy.integrate import quad`

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

`x_min = 0.0`
`x_max = 16.0`

`mean = 8.0 `
`std = 3.0`

`x = np.linspace(x_min, x_max, 100)`

`y = scipy.stats.norm.pdf(x,mean,std)`

`plt.plot(x,y, color='black')`

`#----------------------------------------------------------------------------------------#`
`# fill area 1`

`pt1 = mean + std`
`plt.plot([pt1 ,pt1 ],[0.0,scipy.stats.norm.pdf(pt1 ,mean, std)], color='black')`

`pt2 = mean - std`
`plt.plot([pt2 ,pt2 ],[0.0,scipy.stats.norm.pdf(pt2 ,mean, std)], color='black')`

`ptx = np.linspace(pt1, pt2, 10)`
`pty = scipy.stats.norm.pdf(ptx,mean,std)`

`plt.fill_between(ptx, pty, color='#0b559f', alpha='1.0')`

`#----------------------------------------------------------------------------------------#`
`# fill area 2`

`pt1 = mean + std`
`plt.plot([pt1 ,pt1 ],[0.0,scipy.stats.norm.pdf(pt1 ,mean, std)], color='black')`

`pt2 = mean + 2.0 * std`
`plt.plot([pt2 ,pt2 ],[0.0,scipy.stats.norm.pdf(pt2 ,mean, std)], color='black')`

`ptx = np.linspace(pt1, pt2, 10)`
`pty = scipy.stats.norm.pdf(ptx,mean,std)`

`plt.fill_between(ptx, pty, color='#2b7bba', alpha='1.0')`

`#----------------------------------------------------------------------------------------#`
`# fill area 3`

`pt1 = mean - std`
`plt.plot([pt1 ,pt1 ],[0.0,scipy.stats.norm.pdf(pt1 ,mean, std)], color='black')`

`pt2 = mean - 2.0 * std`
`plt.plot([pt2 ,pt2 ],[0.0,scipy.stats.norm.pdf(pt2 ,mean, std)], color='black')`

`ptx = np.linspace(pt1, pt2, 10)`
`pty = scipy.stats.norm.pdf(ptx,mean,std)`

`plt.fill_between(ptx, pty, color='#2b7bba', alpha='1.0')`

`#----------------------------------------------------------------------------------------#`
`# fill area 4`

`pt1 = mean + 2.0 * std`
`plt.plot([pt1 ,pt1 ],[0.0,scipy.stats.norm.pdf(pt1 ,mean, std)], color='black')`

`pt2 = mean + 3.0 * std`
`plt.plot([pt2 ,pt2 ],[0.0,scipy.stats.norm.pdf(pt2 ,mean, std)], color='black')`

`ptx = np.linspace(pt1, pt2, 10)`
`pty = scipy.stats.norm.pdf(ptx,mean,std)`

`plt.fill_between(ptx, pty, color='#539ecd', alpha='1.0')`

`#----------------------------------------------------------------------------------------#`
`# fill area 5`

`pt1 = mean - 2.0 * std`
`plt.plot([pt1 ,pt1 ],[0.0,scipy.stats.norm.pdf(pt1 ,mean, std)], color='black')`

`pt2 = mean - 3.0 * std`
`plt.plot([pt2 ,pt2 ],[0.0,scipy.stats.norm.pdf(pt2 ,mean, std)], color='black')`

`ptx = np.linspace(pt1, pt2, 10)`
`pty = scipy.stats.norm.pdf(ptx,mean,std)`

`plt.fill_between(ptx, pty, color='#539ecd', alpha='1.0')`

`#----------------------------------------------------------------------------------------#`
`# fill area 6`

`pt1 = mean + 3.0 * std`
`plt.plot([pt1 ,pt1 ],[0.0,scipy.stats.norm.pdf(pt1 ,mean, std)], color='black')`

`pt2 = mean + 10.0 *std`
`plt.plot([pt2 ,pt2 ],[0.0,scipy.stats.norm.pdf(pt2 ,mean, std)], color='black')`

`ptx = np.linspace(pt1, pt2, 10)`
`pty = scipy.stats.norm.pdf(ptx,mean,std)`

`plt.fill_between(ptx, pty, color='#89bedc', alpha='1.0')`

`#----------------------------------------------------------------------------------------#`
`# fill area 7`

`pt1 = mean - 3.0 * std`
`plt.plot([pt1 ,pt1 ],[0.0,scipy.stats.norm.pdf(pt1 ,mean, std)], color='black')`

`pt2 = mean - 10.0 * std`
`plt.plot([pt2 ,pt2 ],[0.0,scipy.stats.norm.pdf(pt2 ,mean, std)], color='black')`

`ptx = np.linspace(pt1, pt2, 10)`
`pty = scipy.stats.norm.pdf(ptx,mean,std)`

`plt.fill_between(ptx, pty, color='#89bedc', alpha='1.0')`

`#----------------------------------------------------------------------------------------#`

`plt.grid()`

`plt.xlim(x_min,x_max)`
`plt.ylim(0,0.25)`

`plt.title('How to plot a normal distribution in python with matplotlib',fontsize=10)`

`plt.xlabel('x')`
`plt.ylabel('Normal Distribution')`

`plt.savefig("normal_distribution_2.png")`
`plt.show()`
```

### Références

Liens Site
Normal distribution wikipedia
python pylab plot normal distribution stackoverflow
scipy.stats.norm scipy doc
Image

of