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