Saltar al contenido

¿Cómo normalizar un histograma en python?

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))

ingrese la descripción de la imagen aquí

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:
ingrese la descripción de la imagen aquí

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *