(Normalizar) o igualar un histograma con Matplotlib
¡Tengo un pequeño favor/pregunta que hacer!
Tengo alrededor de 25 de estas imágenes:
Y siempre del mismo tamaño. Estoy tratando de calcular la cantidad de espacio en blanco y negro en la imagen.
Pero en algunas va hasta 4 y en otras menos, ¡por supuesto!
Pero me encantaría normalizarlo para que el eje z siempre llegue a un número fijo.
Encontré algunas formas aquí: https://stackoverflow.com/questions/22241240/plot-a-histogram-such-that-the-total-area-of-the-histogram-equals-1-density
Pero no pude encontrar la solución que estoy buscando.
Intenté seaboard, cambiar la escala y demás.
código:
np.array(pic<em>b) #Imagen de letra
pixels</em>b = np.array(pic<em>b).flatten()
pixels_b
fig, ax = plt.subplots(figsize=(6, 8) )</em>
plt.hist(pixels_b,3, density=True)
<h1>df = sns.load_dataset('penguins') #ejemplo de datos, por supuesto</h1>
<h1>fig, ax = plt.subplots(figsize=(5, 6))</h1>
<h1>p = sns.histplot(data=df, x='longitud<em>aleta</em>mm', stat='densidad', ax=ax)</h1>
plt.show()
¿Algún consejo?
¡Muchas gracias, sé que no soy muy bueno/a!
davy.ai
¡Hola!
Por lo que entiendo, estás buscando normalizar el histograma de los píxeles en blanco y negro de tus imágenes para que el eje z siempre llegue a un número fijo.
Una forma de hacerlo es utilizando el parámetro
weights
en la funciónhist
de matplotlib. Esto te permite especificar los pesos para cada bin en el histograma, que se pueden usar para normalizarlo.Aquí tienes un ejemplo de código que muestra cómo hacerlo:
En este código,
fixed_z_limit
es el número fijo al que quieres que se normalice el histograma. El arrayweights
se calcula dividiendo cada bin por el número total de píxeles y multiplicando por el límite z fijo. Esto garantiza que el área bajo el histograma sea igual al límite z fijo.¡Espero que esto te sea de ayuda! Si tienes alguna pregunta adicional, no dudes en decírmelo.