Como definir manualmente o tamanho dos silos em Histograma Matplotlib
-
Limites das caixas como parâmetro para
hist()Função - Calcule o número de caixas a partir da largura desejada
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()

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

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

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