Tamaño de contenedor en el histograma de Matplotlib

Requisitos previos: Matplotlib

Un histograma es una representación gráfica de la distribución de datos dada por el usuario. Su apariencia es similar a Bar-Graph excepto que es continua.

Las torres o barras de un histograma se denominan bins. La altura de cada contenedor muestra cuántos valores de esos datos caen dentro de ese rango. 

El ancho de cada contenedor es = (valor máximo de datos – valor mínimo de datos) / número total de contenedores 

El valor predeterminado de la cantidad de contenedores que se crearán en un histograma es 10. Sin embargo, podemos cambiar el tamaño de los contenedores usando el parámetro contenedores en matplotlib.pyplot.hist(). 

Método 1 : 

Podemos pasar un número entero en bins indicando cuántos bins/torres se crearán en el histograma y el ancho de cada bin se cambiará en consecuencia.

Ejemplo 1 :

Python3

import matplotlib.pyplot as plt
  
height = [189, 185, 195, 149, 189, 147, 154, 
          174, 169, 195, 159, 192, 155, 191, 
          153, 157, 140, 144, 172, 157, 181, 
          182, 166, 167]
  
plt.hist(height, edgecolor="red", bins=5)
plt.show()

Producción :

Aquí, los contenedores = 5, es decir, el número de contenedores que se crearán es 5. Establecer los contenedores en un número entero crea contenedores del mismo tamaño o ancho. A medida que se cambia el tamaño del contenedor, el ancho del contenedor se cambiaría en consecuencia como:

ancho = (195 – 140) / 5 = 11

Ejemplo 2:

Python3

import matplotlib.pyplot as plt
  
values = [87, 53, 66, 61, 67, 68, 62,
          110, 104, 61, 111, 123, 117,
          119, 116, 104, 92, 111, 90,
          103, 81, 80, 101, 51, 79, 107,
          110, 129, 145, 139, 110]
  
plt.hist(values, bins=7, edgecolor="yellow", color="green")
plt.show()

Producción :

En el gráfico anterior, el ancho de cada contenedor es:

ancho = ( 145 – 51 ) / 7 = 13,4

Método 2:

También podemos pasar una secuencia de int o float en los contenedores de parámetros. En el que los elementos de la secuencia son los bordes/límites de los contenedores. En este método, el ancho del contenedor puede variar para cada contenedor.

Supongamos que se asigna una secuencia [1,2,3,4,5] a los contenedores y luego el número de contenedores creados será 4, es decir, el primer contenedor será [1,2) (incluyendo 1, pero excluyendo 2) el segundo contenedor será será [2,3) (incluido 2, pero excluyendo 3) el tercer contenedor será [3,4) (incluido 3, pero excluyendo 4). Sin embargo, en el último contenedor [4,5] se incluyen tanto el 4 como el 5. 

Por lo tanto, todos los contenedores están entreabiertos [a, b) pero el último contenedor está cerrado [a, b]. Para tales casos, el ancho de cada contenedor es igual.

Si la diferencia entre cada elemento de la secuencia asignada a los contenedores no es igual, entonces el ancho de cada contenedor es diferente, por lo tanto, el ancho del contenedor depende de la secuencia.

Ejemplo 1: igual ancho de contenedor

Python3

import matplotlib.pyplot as plt
  
marks = [1, 2, 3, 2, 1, 2, 3, 2, 
         1, 4, 5, 4, 3, 2, 5, 4, 
         5, 4, 5, 3, 2, 1, 5]
  
plt.hist(marks, bins=[1, 2, 3, 4, 5], edgecolor="black")
plt.show()

Producción :

Ejemplo 2: ancho de contenedor desigual

Python3

import matplotlib.pyplot as plt
  
data = [189, 185, 195, 149, 189, 147,
        154, 174, 169, 195, 159, 192,
        155, 191, 153, 157, 140, 144, 
        172, 157, 181, 182, 166, 167]
  
plt.hist(data, bins=[140, 150, 160, 175, 185, 200],
         edgecolor="yellow", color="grey")
  
plt.show()

Producción:

Método 3:

Para pasar una secuencia en el parámetro bins, también podemos usar la función de rango para bins igualmente distribuidos. Dentro de range(), el punto inicial es el mínimo de datos, el punto final es el máximo de datos + el ancho del contenedor mencionado, como en range(), el punto final no está incluido y el paso es el ancho del contenedor. 

Como el paso está fijo en range(), obtenemos contenedores de igual tamaño en el histograma.

Ejemplo :

Python3

import matplotlib.pyplot as plt
  
data = [87, 53, 66, 61, 67, 68, 62, 110,
        104, 61, 111, 123, 117, 119, 116,
        104, 92, 111, 90, 103, 81, 80, 101,
        51, 79, 107, 110, 129, 145, 128, 
        132, 135, 131, 126, 139, 110]
  
binwidth = 8
plt.hist(data, bins=range(min(data), max(data) + binwidth, binwidth),
         edgecolor="yellow", color="brown")
  
plt.show()

Producción :

Publicación traducida automáticamente

Artículo escrito por riyaaggarwaldtu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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