Como definir manualmente o tamanho dos silos em Histograma Matplotlib

Suraj Joshi 15 fevereiro 2024
  1. Limites das caixas como parâmetro para hist() Função
  2. Calcule o número de caixas a partir da largura desejada
Como definir manualmente o tamanho dos silos em Histograma Matplotlib

Para desenhar o histograma, utilizamos a função hist2d() onde o número de caixas n é passado como parâmetro. Podemos definir o tamanho das caixas calculando o número necessário de caixas a fim de manter o tamanho necessário.

Limites das caixas como parâmetro para hist() Função

Sintaxe para a função 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 definir o tamanho das caixas em Matplotlib, passamos uma lista com os limites da caixa ao invés do número de caixas como parâmetro de 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()

definir o tamanho dos silos na lista de passagem Matplotlib como parâmetro

No exemplo acima, definimos manualmente os limites e, indiretamente, a largura do silo. Poderíamos também utilizar o np.arange para encontrar limites igualmente espaçados.

Para tornar as lixeiras igualmente espaçadas, podemos utilizar a np.arange para encontrar limites igualmente espaçados.

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

Caixas igualmente distribuídas na lista de passagem Matplotlib como parâmetro

Advertência
O segundo parâmetro de np.arange deve ser max(data) + binwidth mas não max(data), porque o intervalo criado por np.arange(start, stop, step) inclui start mas exclui stop. Portanto, precisamos adicionar o intervalo binwidth a max(data) para fazer a parada real como max(data).

Calcule o número de caixas a partir da largura desejada

Para encontrar o número de caixas, calculamos o resultado do valor máximo - valor mínimo dividido pela largura desejada da caixa.

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 o número de caixas de uma determinada largura

Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Artigo relacionado - Matplotlib Histogram