Créer une représentation graphique interactive de triangulation 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

Ce laboratoire vous guidera dans la création d'un graphique de triangulation à l'aide de Matplotlib. Vous allez apprendre à créer un objet Triangulation, à utiliser un objet TriFinder et à configurer une interaction pour mettre en évidence le triangle sous le curseur.

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

Créer un objet Triangulation

Tout d'abord, nous devons créer un objet Triangulation. Nous allons utiliser la classe Triangulation de matplotlib.tri. Dans cet exemple, nous allons créer un objet Triangulation avec des données aléatoires.

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.tri import Triangulation

## Générer des données aléatoires
x = np.random.rand(10)
y = np.random.rand(10)
triang = Triangulation(x, y)

Créer un objet TriFinder

Pour trouver le triangle sous le curseur, nous devons créer un objet TriFinder. Nous pouvons obtenir l'objet TriFinder par défaut à partir de l'objet Triangulation en utilisant la méthode get_trifinder().

trifinder = triang.get_trifinder()

Configurer la représentation graphique

Maintenant, nous pouvons configurer la représentation graphique. Nous allons utiliser plt.subplots() pour créer un objet figure et un objet axe. Ensuite, nous utiliserons ax.triplot() pour tracer la triangulation.

fig, ax = plt.subplots()
ax.triplot(triang)

Mettre en évidence le triangle sous le curseur

Nous souhaitons mettre en évidence le triangle sous le curseur lorsque la souris est déplacée sur la représentation graphique. Pour ce faire, nous allons créer un objet Polygon qui sera mis à jour avec les sommets du triangle sous le curseur. Nous utiliserons ax.add_patch() pour ajouter le polygone à la représentation graphique.

from matplotlib.patches import Polygon

polygon = Polygon([[0, 0], [0, 0], [0, 0]], facecolor='y')
ax.add_patch(polygon)

Nous créerons également une fonction update_polygon() qui mettra à jour les sommets du polygone avec les sommets du triangle sous le curseur.

def update_polygon(tri):
    if tri == -1:
        points = [0, 0, 0]
    else:
        points = triang.triangles[tri]
    xs = triang.x[points]
    ys = triang.y[points]
    polygon.set_xy(np.column_stack([xs, ys]))

Configurer l'interactivité

Nous devons configurer l'interactivité pour mettre à jour le triangle sous le curseur. Nous utiliserons l'événement motion_notify_event pour détecter lorsque la souris est déplacée sur la représentation graphique. Nous créerons une fonction on_mouse_move() qui obtiendra le triangle sous le curseur en utilisant l'objet TriFinder, mettra à jour le polygone avec les sommets du triangle et mettra à jour le titre de la représentation graphique avec l'index du triangle.

def on_mouse_move(event):
    if event.inaxes is None:
        tri = -1
    else:
        tri = trifinder(event.xdata, event.ydata)
    update_polygon(tri)
    ax.set_title(f'Triangle {tri}')
    event.canvas.draw()

fig.canvas.mpl_connect('motion_notify_event', on_mouse_move)

Afficher la représentation graphique

Enfin, nous pouvons afficher la représentation graphique en utilisant plt.show().

plt.show()

Récapitulatif

Dans ce laboratoire, nous avons appris à créer une représentation graphique de triangulation à l'aide de Matplotlib. Nous avons utilisé les classes Triangulation et TriFinder pour créer une triangulation et trouver le triangle sous le curseur. Nous avons également configuré l'interactivité pour mettre en évidence le triangle sous le curseur.