161 votes

Comment créer un graphique de densité dans matplotlib ?

Dans R, je peux créer la sortie désirée en faisant :

data = c(rep(1.5, 7), rep(2.5, 2), rep(3.5, 8),
         rep(4.5, 3), rep(5.5, 1), rep(6.5, 8))
plot(density(data, bw=0.5))

Density plot in R

En python (avec matplotlib), le plus proche que j'ai obtenu était un simple histogramme :

import matplotlib.pyplot as plt
data = [1.5]*7 + [2.5]*2 + [3.5]*8 + [4.5]*3 + [5.5]*1 + [6.5]*8
plt.hist(data, bins=6)
plt.show()

Histogram in matplotlib

J'ai aussi essayé le paramètre normed=True mais je n'ai rien trouvé d'autre que d'essayer d'ajuster une gaussienne à l'histogramme.

Mes dernières tentatives étaient autour de scipy.stats y gaussian_kde J'ai suivi des exemples sur le web, mais je n'ai pas réussi jusqu'à présent.

0 votes

Jetez un coup d'œil à seaborn stackoverflow.com/a/32803224/1922302

0voto

zerryberry Points 1

Vous pouvez faire quelque chose comme :

s = np.random.normal(2, 3, 1000)
import matplotlib.pyplot as plt
count, bins, ignored = plt.hist(s, 30, density=True)
plt.plot(bins, 1/(3 * np.sqrt(2 * np.pi)) * np.exp( - (bins - 2)**2 / (2 * 3**2) ), 
linewidth=2, color='r')
plt.show()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X