matplotlib hist() falla (la suma de las barras no es igual a uno) con Density=True y pesos.
Estoy teniendo problemas al trabajar con plt.hist(density=True) aunque he configurado weights. Mi objetivo es obtener un histograma en el que la suma de las barras (eje y) sea igual a 1. Es un tema ampliamente discutido, sin embargo [1][2] no puedo encontrar la solución correcta. Aquí está mi código:
data = np.array(data).astype("float32")
weights = np.ones_like(data)/float(len(data))
n, bins, patches = plt.hist(x=data, density=True, bins=20, color='#0504aa',weights=weights,
alpha=0.7, rwidth=0.85)
lo cual crea:
Las barras obviamente no suman uno. ¿Alguien tiene una solución para mi problema? Tal vez ya esté publicada en otra parte, ¡pero no puedo encontrarla!
Saludos.
davy.ai
Cuando se trabaja con
plt.hist(density=True)
en matplotlib, establecerweights
por sí solo no hará que las barras sumen uno.Una solución es calcular manualmente la suma de las barras y volver a escalarlas en consecuencia. Aquí hay un ejemplo de código:
Este código vuelve a escalar las alturas de las barras en función de la suma total y luego establece el límite del eje y a 1 para asegurarse de que las barras sumen uno.
¡Espero que esto ayude!