Cómo configurar manualmente el tamaño de los contenedores en el histograma Matplotlib

Suraj Joshi 30 enero 2023
  1. Límites de bin como parámetro para la función hist()
  2. Calcule el número de contenedores desde el ancho deseado
Cómo configurar manualmente el tamaño de los contenedores en el histograma Matplotlib

Para dibujar el histograma, utilizamos la función hist2d(), donde se pasa el número de bins n como parámetro. Podemos establecer el tamaño de los contenedores calculando el número requerido de contenedores para mantener el tamaño requerido.

Límites de bin como parámetro para la función hist()

Sintaxis para función hist:

hist(x,
     bins: NoneType=None,
     range: NoneType=None,
     density: NoneType=None,
     weights: NoneType=None,
     cumulative: bool=False,
     bottom: NoneType=None,
     histtype: str=builtins.str,
     align: str=builtins.str,
     orientation: str=builtins.str,
     rwidth: NoneType=None,
     log: bool=False,
     color: NoneType=None,
     label: NoneType=None,
     stacked: bool=False,
     normed: NoneType=None,
     data: NoneType=None,
     **kwargs)

Para establecer el tamaño de los contenedores en Matplotlib, pasamos una lista con los límites del contenedor en lugar del número de contenedores como el parámetro bin.

import numpy as np
import numpy.random as random
import matplotlib.pyplot as plt

data = np.random.random_sample(100) * 100.0
plt.hist(data, bins=[0, 10, 20, 30, 40, 50, 60, 80, 100])
plt.xlabel("Value")
plt.ylabel("Counts")
plt.title("Histogram Plot of Data")
plt.grid(True)
plt.show()

establecer el tamaño de los contenedores en la lista de paso de Matplotlib como parámetro

Establecemos manualmente los límites del contenedor, e indirectamente el ancho del contenedor, en el ejemplo anterior. También podríamos usar np.arange para encontrar límites igualmente espaciados.

Para hacer que los contenedores estén igualmente espaciados, podemos usar np.arange para encontrar límites igualmente espaciados

import numpy as np
import numpy.random as random
import matplotlib.pyplot as plt

binwidth = 10
data = np.random.random_sample(100) * 100.0
plt.hist(data, bins=np.arange(min(data), max(data) + binwidth, binwidth))
plt.xlabel("Data")
plt.ylabel("Counts")
plt.title("Histogram Plot of Data")
plt.grid(True)
plt.show()

Contenedores igualmente distribuidos en la lista de paso de Matplotlib como parámetro

Advertencia
El segundo parámetro de np.arange será max(data) + binwidth pero no max(data), porque el intervalo creado por np.arange(start, stop, step) incluye start pero excluye stop. Por lo tanto, necesitamos agregar el intervalo binwidth a max(data) para hacer la parada real como max(data).

Calcule el número de contenedores desde el ancho deseado

Para encontrar el número de contenedores, calculamos el resultado del valor máximo-valor mínimo dividido por el ancho del contenedor deseado.

import numpy as np
import matplotlib.pyplot as plt


def find_bins(observations, width):
    minimmum = np.min(observations)
    maximmum = np.max(observations)
    bound_min = -1.0 * (minimmum % width - minimmum)
    bound_max = maximmum - maximmum % width + width
    n = int((bound_max - bound_min) / width) + 1
    bins = np.linspace(bound_min, bound_max, n)
    return bins


data = np.random.random_sample(120) * 100
bins = find_bins(data, 10.0)
plt.hist(data, bins=bins)
plt.xlabel("Data")
plt.ylabel("Counts")
plt.title("Histogram Plot")
plt.show()

encontrar el número de contenedores del ancho dado

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artículo relacionado - Matplotlib Histogram