Fonctions interactives de 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 les fonctions interactives de Matplotlib. Ces fonctions interactives incluent ginput, waitforbuttonpress et le positionnement manuel de clabel. Le but de ce laboratoire est de vous aider à comprendre comment utiliser ces fonctions pour créer des graphiques interactifs dans Matplotlib. À la fin de ce laboratoire, vous serez capable de créer et de modifier des graphiques à l'aide des fonctions interactives 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 passer à 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 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.

Définir un triangle en cliquant sur trois points

Dans cette étape, nous allons définir un triangle en cliquant sur trois points. Nous utiliserons les fonctions ginput et waitforbuttonpress pour y arriver. La fonction ginput nous permet de sélectionner des points sur le graphique avec la souris, et la fonction waitforbuttonpress attend un événement de pression sur un bouton.

import time
import matplotlib.pyplot as plt
import numpy as np

def tellme(s):
    print(s)
    plt.title(s, fontsize=16)
    plt.draw()

plt.figure()
plt.xlim(0, 1)
plt.ylim(0, 1)

tellme('Vous allez définir un triangle, cliquez pour commencer')

plt.waitforbuttonpress()

while True:
    pts = []
    while len(pts) < 3:
        tellme('Sélectionnez 3 coins avec la souris')
        pts = np.asarray(plt.ginput(3, timeout=-1))
        if len(pts) < 3:
            tellme('Trop peu de points, recommencez')
            time.sleep(1)  ## Attendez une seconde

    ph = plt.fill(pts[:, 0], pts[:, 1], 'r', lw=2)

    tellme('Êtes-vous content? Cliquez sur une touche pour oui, cliquez avec la souris pour non')

    if plt.waitforbuttonpress():
        break

    ## Supprimez la zone de remplissage
    for p in ph:
        p.remove()

Tracer des lignes de niveau selon la distance aux coins du triangle

Dans cette étape, nous allons tracer des lignes de niveau selon la distance aux coins du triangle. Nous allons définir une fonction de distance à partir de points individuels et tracer des lignes de niveau selon cette fonction.

## Définir une fonction agréable de distance à partir de points individuels
def f(x, y, pts):
    z = np.zeros_like(x)
    for p in pts:
        z = z + 1/(np.sqrt((x - p[0])**2 + (y - p[1])**2))
    return 1/z

X, Y = np.meshgrid(np.linspace(-1, 1, 51), np.linspace(-1, 1, 51))
Z = f(X, Y, pts)

CS = plt.contour(X, Y, Z, 20)

tellme('Utilisez la souris pour sélectionner les emplacements des étiquettes de ligne de niveau, appuyez sur le bouton central pour terminer')
CL = plt.clabel(CS, manual=True)

Zoom

Dans cette étape, nous allons agrandir le graphique. Nous utiliserons la fonction ginput pour sélectionner deux coins de la zone de zoom et la fonction waitforbuttonpress pour terminer le zoom.

tellme('Maintenant effectuez un zoom imbriqué, cliquez pour commencer')
plt.waitforbuttonpress()

while True:
    tellme('Sélectionnez deux coins du zoom, appuyez sur le bouton central de la souris pour terminer')
    pts = plt.ginput(2, timeout=-1)
    if len(pts) < 2:
        break
    (x0, y0), (x1, y1) = pts
    xmin, xmax = sorted([x0, x1])
    ymin, ymax = sorted([y0, y1])
    plt.xlim(xmin, xmax)
    plt.ylim(ymin, ymax)

tellme('Tout est fait!')
plt.show()

Sommaire

Dans ce laboratoire, nous avons appris à utiliser les fonctions interactives de Matplotlib pour créer et modifier des graphiques. Nous avons utilisé ginput, waitforbuttonpress et le positionnement manuel de clabel pour définir un triangle, tracer des lignes de niveau selon la distance aux coins du triangle et agrandir le graphique. En utilisant ces fonctions, nous pouvons créer des graphiques interactifs qui permettent à l'utilisateur d'interagir avec les données et de les explorer plus en détail.