Tracé d'histogrammes avec Matplotlib

PythonPythonBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons apprendre à tracer des histogrammes avec Matplotlib. Nous allons générer des données et tracer un histogramme simple, mettre à jour les couleurs de l'histogramme, tracer un histogramme 2D et personnaliser votre histogramme.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet de notes pour accéder au carnet Jupyter pour pratiquer.

Parfois, vous devrez peut-être attendre quelques secondes pour que le carnet Jupyter ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limites du carnet Jupyter.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous résoudrons rapidement le problème pour vous.

Générer des données et tracer un histogramme simple

Pour tracer un histogramme en 1D, nous avons seulement besoin d'un seul vecteur de nombres. Pour un histogramme en 2D, nous aurons besoin d'un second vecteur. Nous allons les générer ci-dessous et montrer l'histogramme pour chaque vecteur.

import matplotlib.pyplot as plt
import numpy as np

## Crée un générateur de nombres aléatoires avec une graine fixe pour la reproductibilité
rng = np.random.default_rng(19680801)

N_points = 100000
n_bins = 20

## Génère deux distributions normales
dist1 = rng.standard_normal(N_points)
dist2 = 0.4 * rng.standard_normal(N_points) + 5

fig, axs = plt.subplots(1, 2, sharey=True, tight_layout=True)

## Nous pouvons définir le nombre de barres avec l'argument clé *bins*.
axs[0].hist(dist1, bins=n_bins)
axs[1].hist(dist2, bins=n_bins)

plt.show()

Mise à jour des couleurs de l'histogramme

La méthode histogram renvoie (entre autres choses) un objet patches. Cela nous donne accès aux propriétés des objets tracés. En utilisant cela, nous pouvons éditer l'histogramme selon nos goûts. Modifions la couleur de chaque barre en fonction de sa valeur y.

## N est le comptage dans chaque boîte, bins est la limite inférieure de la boîte
N, bins, patches = axs[0].hist(dist1, bins=n_bins)

## Nous allons coder les couleurs en fonction de la hauteur, mais vous pouvez utiliser n'importe quel scalaire
fracs = N / N.max()

## nous devons normaliser les données de 0..1 pour toute la plage de la carte de couleurs
norm = colors.Normalize(fracs.min(), fracs.max())

## Maintenant, nous allons parcourir nos objets et définir la couleur de chacun en conséquence
for thisfrac, thispatch in zip(fracs, patches):
    color = plt.cm.viridis(norm(thisfrac))
    thispatch.set_facecolor(color)

## Nous pouvons également normaliser nos entrées par le nombre total de comptages
axs[1].hist(dist1, bins=n_bins, density=True)

## Maintenant, nous formattons l'axe y pour afficher le pourcentage
axs[1].yaxis.set_major_formatter(PercentFormatter(xmax=1))

plt.show()

Tracer un histogramme 2D

Pour tracer un histogramme 2D, il suffit d'avoir deux vecteurs de même longueur, correspondant à chaque axe de l'histogramme.

fig, ax = plt.subplots(tight_layout=True)
hist = ax.hist2d(dist1, dist2)

plt.show()

Personnaliser votre histogramme

Personnaliser un histogramme 2D est similaire au cas 1D, vous pouvez contrôler les composants visuels tels que la taille des boîtes ou la normalisation des couleurs.

fig, axs = plt.subplots(3, 1, figsize=(5, 15), sharex=True, sharey=True,
                        tight_layout=True)

## Nous pouvons augmenter le nombre de boîtes sur chaque axe
axs[0].hist2d(dist1, dist2, bins=40)

## De même que définir la normalisation des couleurs
axs[1].hist2d(dist1, dist2, bins=40, norm=colors.LogNorm())

## Nous pouvons également définir des nombres personnalisés de boîtes pour chaque axe
axs[2].hist2d(dist1, dist2, bins=(80, 10), norm=colors.LogNorm())

plt.show()

Récapitulatif

Dans ce laboratoire, nous avons appris à tracer des histogrammes avec Matplotlib. Nous avons généré des données et tracé un histogramme simple, mis à jour les couleurs de l'histogramme, tracé un histogramme 2D et personnalisé notre histogramme. Nous pouvons utiliser ces techniques pour visualiser et analyser des données dans diverses situations.