121 votes

Histogramme Matplotlib

J'ai donc un petit problème. J'ai un ensemble de données dans scipy qui est déjà au format d'histogramme, j'ai donc le centre des cases et le nombre d'événements par case. Comment puis-je maintenant tracer est comme un histogramme. J'ai juste essayé

 bins, n=hist()
 

mais ça n'a pas plu. Des recommandations?

263voto

unutbu Points 222216
 import matplotlib.pyplot as plt
import numpy as np

mu, sigma = 100, 15
x = mu + sigma * np.random.randn(10000)
hist, bins = np.histogram(x, bins=50)
width = 0.7 * (bins[1] - bins[0])
center = (bins[:-1] + bins[1:]) / 2
plt.bar(center, hist, align='center', width=width)
plt.show()
 

entrez la description de l'image ici

L’interface orientée objet est également simple:

 fig, ax = plt.subplots()
ax.bar(center, hist, align='center', width=width)
fig.savefig("1.png")
 

27voto

Matthias123 Points 76

Si vous ne voulez pas de barres, vous pouvez le tracer comme ceci:

 import numpy as np
import matplotlib.pyplot as plt

mu, sigma = 100, 15
x = mu + sigma * np.random.randn(10000)

bins, edges = np.histogram(x, 50, normed=1)
left,right = edges[:-1],edges[1:]
X = np.array([left,right]).T.flatten()
Y = np.array([bins,bins]).T.flatten()

plt.plot(X,Y)
plt.show()
 

6voto

Michael Malak Points 96

Si vous souhaitez / souhaitez utiliser les pandas:

 pandas.DataFrame({'x':hist[1][1:],'y':hist[0]}).plot(x='x',kind='bar')
 

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