Tenemos el arreglo a este rompecabezas, o por lo menos eso pensamos. Si continuas con alguna interrogante deja tu comentario, que para nosotros será un gusto responderte
Solución:
Cuando traza un histograma normalizado, no es la altura lo que debe sumar uno, sino el área debajo de la curva debe sumar uno:
In [44]:
import matplotlib.pyplot as plt
k=(3,3,3,3)
x, bins, p=plt.hist(k, density=True) # used to be normed=True in older versions
from numpy import *
plt.xticks( arange(10) ) # 10 ticks on x axis
plt.show()
In [45]:
print bins
[ 2.5 2.6 2.7 2.8 2.9 3. 3.1 3.2 3.3 3.4 3.5]
Aquí, en este ejemplo, el ancho del contenedor es 0,1, el área debajo de la curva suma uno (0,1*10).
Para que la suma de las alturas sea 1, agregue lo siguiente antes plt.show()
:
for item in p:
item.set_height(item.get_height()/sum(x))
Una forma es obtener las probabilidades por su cuenta y luego trazar con plt.bar
:
In [91]: from collections import Counter
...: c=Counter(k)
...: print c
Counter(1: 2, 3: 1, 4: 1)
In [92]: plt.bar(prob.keys(), prob.values())
...: plt.show()
resultado:
Puede usar la solución descrita aquí:
weights = np.ones_like(myarray)/float(len(myarray))
plt.hist(myarray, weights=weights)
Aquí puedes ver las reseñas y valoraciones de los lectores
Si te ha resultado de provecho este artículo, sería de mucha ayuda si lo compartieras con más desarrolladores de este modo contrubuyes a dar difusión a este contenido.