Comment définir manuellement la taille des bacs dans l'histogramme Matplotlib

Suraj Joshi 15 février 2024
  1. Limites du bac comme paramètre de la fonction hist()
  2. Calculez le nombre de bacs à partir de la largeur souhaitée
Comment définir manuellement la taille des bacs dans l'histogramme Matplotlib

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

définir la taille des bacs dans la liste de passage Matplotlib comme paramètre

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

Bacs équitablement répartis dans la liste de passage Matplotlib en tant que paramètre

Attention
Le deuxième paramètre de 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()

trouver le nombre de bacs à partir d’une largeur donnée

Auteur: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Article connexe - Matplotlib Histogram