Comment définir manuellement la taille des bacs dans l'histogramme Matplotlib
-
Limites du bac comme paramètre de la fonction
hist()
- Calculez le nombre de bacs à partir de la largeur souhaitée
Pour dessiner l’histogramme, nous utilisons la fonction hist2d()
où le nombre de cases n
est passé en paramètre. Nous pouvons définir la taille des bacs en calculant le nombre requis de bacs afin de maintenir la taille requise.
Limites du bac comme paramètre de la fonction hist()
Syntaxe de 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)
Pour définir la taille des bacs dans Matplotlib, nous passons une liste avec les limites des bacs au lieu du nombre de bacs comme paramètre 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()
Nous définissons manuellement les limites du bac, et indirectement la largeur du bac, dans l’exemple ci-dessus. Nous pourrions également utiliser np.arange
pour trouver des frontières également espacées.
Pour rendre les bacs également espacés, nous pouvons utiliser np.arange
pour trouver des limites également espacées
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
doit être max(data) + largeur de bin
mais pas max(data)
, car l’intervalle créé par np.arange(start, stop, step)
inclut start
mais exclut stop
. Par conséquent, nous devons ajouter l’intervalle binwidth
à max(data)
pour que l’arrêt réel soit max(data)
.Calculez le nombre de bacs à partir de la largeur souhaitée
Pour trouver le nombre de bacs, nous calculons le résultat de valeur maximale-valeur minimale
divisé par la largeur de bac souhaitée.
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