Sería más útil si presentara un ejemplo de trabajo más completo (o en este caso no funcional).
Intenté lo siguiente:
import numpy as np
import matplotlib.pyplot as plt
x = np.random.randn(1000)
fig = plt.figure()
ax = fig.add_subplot(111)
n, bins, rectangles = ax.hist(x, 50, density=True)
fig.canvas.draw()
plt.show()
De hecho, esto producirá un histograma de gráfico de barras con un eje y que va desde [0,1]
.
Además, según la hist
documentación (es decir, ax.hist?
de ipython
), creo que la suma también está bien:
*normed*:
If *True*, the first element of the return tuple will
be the counts normalized to form a probability density, i.e.,
``n/(len(x)*dbin)``. In a probability density, the integral of
the histogram should be 1; you can verify that with a
trapezoidal integration of the probability density function::
pdf, bins, patches = ax.hist(...)
print np.sum(pdf * np.diff(bins))
Dando una oportunidad a esto después de los comandos anteriores:
np.sum(n * np.diff(bins))
Obtengo un valor de retorno de 1.0
lo esperado. Recuerde que eso normed=True
no significa que la suma del valor en cada barra será la unidad, sino que la integral sobre las barras es la unidad. En mi caso np.sum(n)
devolvió aprox 7.2767
.