Visualisation interactive de données avec Python 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, vous allez apprendre à interagir avec des données à l'aide de plusieurs canevas. En sélectionnant et en mettant en évidence un point sur un axe, vous générerez les données de ce point sur l'autre axe. Nous utiliserons Python Matplotlib pour ce laboratoire.

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'adresses 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.

Importation des bibliothèques

Nous allons commencer par importer les bibliothèques nécessaires.

import numpy as np
import matplotlib.pyplot as plt

Générer des données

Nous allons générer des données aléatoires à l'aide de NumPy.

np.random.seed(19680801)
X = np.random.rand(100, 200)
xs = np.mean(X, axis=1)
ys = np.std(X, axis=1)

Créer une figure et des axes

Nous allons créer une figure avec deux axes.

fig, (ax, ax2) = plt.subplots(2, 1)

Tracer les données

Nous allons tracer les données générées sur le premier axe.

line, = ax.plot(xs, ys, 'o', picker=True, pickradius=5)

Créer la classe PointBrowser

Nous allons créer une classe pour gérer la fonctionnalité du navigateur de points.

class PointBrowser:
    def __init__(self):
        self.lastind = 0

        self.text = ax.text(0.05, 0.95, 'choisi : aucun',
                            transform=ax.transAxes, va='top')
        self.selected, = ax.plot([xs[0]], [ys[0]], 'o', ms=12, alpha=0.4,
                                 color='jaune', visible=False)

    def on_press(self, event):
        if self.lastind is None:
            return
        if event.key not in ('n', 'p'):
            return
        if event.key == 'n':
            inc = 1
        else:
            inc = -1

        self.lastind += inc
        self.lastind = np.clip(self.lastind, 0, len(xs) - 1)
        self.update()

    def on_pick(self, event):

        if event.artist!= line:
            return True

        N = len(event.ind)
        if not N:
            return True

        ## les emplacements de clic
        x = event.mouseevent.xdata
        y = event.mouseevent.ydata

        distances = np.hypot(x - xs[event.ind], y - ys[event.ind])
        indmin = distances.argmin()
        dataind = event.ind[indmin]

        self.lastind = dataind
        self.update()

    def update(self):
        if self.lastind is None:
            return

        dataind = self.lastind

        ax2.clear()
        ax2.plot(X[dataind])

        ax2.text(0.05, 0.9, f'mu={xs[dataind]:1.3f}\nsigma={ys[dataind]:1.3f}',
                 transform=ax2.transAxes, va='top')
        ax2.set_ylim(-0.5, 1.5)
        self.selected.set_visible(True)
        self.selected.set_data(xs[dataind], ys[dataind])

        self.text.set_text('choisi : %d' % dataind)
        fig.canvas.draw()

Connecter les gestionnaires d'événements

Nous allons connecter les gestionnaires d'événements au canevas de la figure.

browser = PointBrowser()

fig.canvas.mpl_connect('pick_event', browser.on_pick)
fig.canvas.mpl_connect('key_press_event', browser.on_press)

Afficher le tracé

Nous allons afficher le tracé.

plt.show()

Sommaire

Dans ce laboratoire, nous avons appris à interagir avec des données à l'aide de plusieurs canevas en utilisant Python Matplotlib. Nous avons créé une classe pour gérer la fonctionnalité du navigateur de points et connecté des gestionnaires d'événements au canevas de la figure pour permettre une interaction.