Construire des 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 à utiliser Matplotlib pour construire des histogrammes à l'aide de rectangles et de PolyCollections. Nous utiliserons numpy pour générer des données aléatoires, puis Matplotlib pour visualiser les données sous forme d'histogramme. Ce laboratoire suppose que vous avez une compréhension de base de Python et de Matplotlib.

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 d'étude 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 limitations 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.

Importez les bibliothèques nécessaires

Avant de commencer, nous devons importer les bibliothèques nécessaires. Nous utiliserons Matplotlib et numpy dans ce laboratoire. Ouvrez un nouveau fichier Python et ajoutez le code suivant :

import matplotlib.pyplot as plt
import numpy as np

Fixez la graine aléatoire et générez des données

Nous utiliserons numpy pour générer des données aléatoires. Pour que nos résultats soient reproductibles, nous allons fixer une graine aléatoire. Ajoutez le code suivant à votre fichier :

np.random.seed(19680801)
data = np.random.randn(1000)

Générez les données de l'histogramme

Maintenant que nous avons nos données aléatoires, nous pouvons générer un histogramme à l'aide de numpy. Nous utiliserons 50 barres pour créer notre histogramme. Ajoutez le code suivant :

n, bins = np.histogram(data, 50)

Générez les coins des rectangles

Pour tracer notre histogramme à l'aide de rectangles, nous devons calculer les coins de chaque rectangle. Ajoutez le code suivant :

left = bins[:-1]
right = bins[1:]
bottom = np.zeros(len(left))
top = bottom + n

Générez l'objet Path et en faites un patch

Ensuite, nous allons générer un objet Path et en faire un patch. Nous utiliserons l'objet Path pour tracer notre histogramme à l'aide de rectangles. Ajoutez le code suivant :

XY = np.array([[left, left, right, right], [bottom, top, top, bottom]]).T
barpath = path.Path.make_compound_path_from_polys(XY)
patch = patches.PathPatch(barpath)
patch.sticky_edges.y[:] = [0]
axs[0].add_patch(patch)
axs[0].autoscale_view()

Tracez l'histogramme à l'aide d'une PathCollection

Au lieu d'utiliser de nombreux instances de Rectangle, nous pouvons utiliser une méthode plus rapide pour tracer notre histogramme en utilisant une PathCollection. Nous allons créer un chemin composé directement à l'aide de sommets et de codes. Ajoutez le code suivant :

nrects = len(left)
nverts = nrects*(1+3+1)
verts = np.zeros((nverts, 2))
codes = np.ones(nverts, int) * path.Path.LINETO
codes[0::5] = path.Path.MOVETO
codes[4::5] = path.Path.CLOSEPOLY
verts[0::5, 0] = left
verts[0::5, 1] = bottom
verts[1::5, 0] = left
verts[1::5, 1] = top
verts[2::5, 0] = right
verts[2::5, 1] = top
verts[3::5, 0] = right
verts[3::5, 1] = bottom

barpath = path.Path(verts, codes)
patch = patches.PathPatch(barpath)
patch.sticky_edges.y[:] = [0]
axs[1].add_patch(patch)
axs[1].autoscale_view()

Affichez l'histogramme

Enfin, nous pouvons afficher notre histogramme à l'aide de Matplotlib. Ajoutez le code suivant à votre fichier :

plt.show()

Sommaire

Dans ce laboratoire, nous avons appris à utiliser Matplotlib pour construire des histogrammes à l'aide de rectangles et de PolyCollections. Nous avons utilisé numpy pour générer des données aléatoires, puis utilisé Matplotlib pour visualiser les données sous forme d'un histogramme. Nous avons également appris à tracer des histogrammes à l'aide d'une PathCollection, qui est une méthode plus rapide que d'utiliser de nombreux instances de Rectangle.