Tracé de lignes efficace 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 tutoriel, nous allons apprendre à utiliser la fonction LineCollection dans Matplotlib pour tracer plusieurs lignes efficacement d'un coup. Nous verrons comment tracer plusieurs lignes avec différentes couleurs et styles, et comment utiliser un tableau masqué pour masquer certaines valeurs. Nous apprendrons également à utiliser la fonction ScalarMappable.set_array pour mapper un tableau de valeurs aux couleurs.

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églerons rapidement le problème pour vous.

Importation des bibliothèques

Avant de commencer, nous devons importer les bibliothèques nécessaires. Nous utiliserons matplotlib.pyplot et numpy.

import matplotlib.pyplot as plt
import numpy as np

Création des données

Ensuite, nous devons créer les données que nous utiliserons pour tracer les lignes. Nous utiliserons numpy pour créer un tableau 2D de valeurs x et y.

x = np.arange(100)
ys = x[:50, np.newaxis] + x[np.newaxis, :]

Création d'une collection de lignes

Maintenant, nous pouvons créer un objet LineCollection avec la fonction LineCollection. Nous pouvons définir les paramètres linewidths, colors et linestyle pour personnaliser l'apparence des lignes.

colors = plt.rcParams['axes.prop_cycle'].by_key()['color']

segs = np.zeros((50, 100, 2))
segs[:, :, 1] = ys
segs[:, :, 0] = x

segs = np.ma.masked_where((segs > 50) & (segs < 60), segs)

line_segments = LineCollection(segs, linewidths=(0.5, 1, 1.5, 2),
                               colors=colors, linestyle='solid')

Création d'un graphique

Nous pouvons maintenant créer un graphique à l'aide de matplotlib et ajouter l'objet LineCollection au graphique en utilisant la méthode add_collection de l'objet Axes.

fig, ax = plt.subplots()
ax.set_xlim(x.min(), x.max())
ax.set_ylim(ys.min(), ys.max())

ax.add_collection(line_segments)
ax.set_title('Line collection with masked arrays')
plt.show()

Mapper des couleurs à des valeurs

Nous pouvons également mapper un tableau de valeurs à des couleurs à l'aide de la fonction ScalarMappable.set_array. Nous allons créer un nouvel ensemble de données et un nouvel objet LineCollection avec le paramètre array défini sur les valeurs de x. Nous pouvons ensuite utiliser la méthode colorbar de l'objet Figure pour ajouter une barre de couleur au graphique.

N = 50
x = np.arange(N)
ys = [x + i for i in x]
segs = [np.column_stack([x, y]) for y in ys]

fig, ax = plt.subplots()
ax.set_xlim(np.min(x), np.max(x))
ax.set_ylim(np.min(ys), np.max(ys))

line_segments = LineCollection(segs, array=x,
                               linewidths=(0.5, 1, 1.5, 2),
                               linestyles='solid')
ax.add_collection(line_segments)
axcb = fig.colorbar(line_segments)
axcb.set_label('Line Number')
ax.set_title('Line Collection with mapped colors')
plt.sci(line_segments)
plt.show()

Sommaire

Dans ce tutoriel, nous avons appris à utiliser la fonction LineCollection dans Matplotlib pour tracer plusieurs lignes efficacement d'un coup. Nous avons vu comment tracer plusieurs lignes avec différentes couleurs et styles, et comment utiliser un tableau masqué pour masquer certaines valeurs. Nous avons également appris à utiliser la fonction ScalarMappable.set_array pour mapper un tableau de valeurs à des couleurs.