Introduction
Dans ce laboratoire, vous allez apprendre à utiliser la bibliothèque Matplotlib pour créer un graphique interactif qui permet aux utilisateurs de sélectionner un ensemble de points à l'aide d'un outil de lasso. Vous allez également apprendre à utiliser une fonction de rappel pour changer la couleur des points sélectionnés.
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 Notebook pour accéder à Jupyter Notebook pour la pratique.
Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.
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
Tout d'abord, importez les bibliothèques nécessaires pour le laboratoire. Nous allons utiliser matplotlib pour créer le graphique et numpy pour générer des données aléatoires.
import matplotlib.pyplot as plt
import numpy as np
Créer la classe LassoManager
Ensuite, créez la classe LassoManager qui gérera la fonctionnalité du lasso. La méthode __init__ initialise l'objet de tracé et de collection. La méthode callback change la couleur des points sélectionnés, et les méthodes on_press et on_release gèrent les événements de souris.
class LassoManager:
def __init__(self, ax, data):
## L'information sur le fait qu'un point a été sélectionné ou non est stockée dans le
## tableau de la collection (0 = hors, 1 = dans), qui est ensuite coloré en bleu
## (hors) et en rouge (dans).
self.collection = RegularPolyCollection(
6, sizes=(100,), offset_transform=ax.transData,
offsets=data, array=np.zeros(len(data)),
clim=(0, 1), cmap=mcolors.ListedColormap(["tab:blue", "tab:red"]))
ax.add_collection(self.collection)
canvas = ax.figure.canvas
canvas.mpl_connect('button_press_event', self.on_press)
canvas.mpl_connect('button_release_event', self.on_release)
def callback(self, verts):
data = self.collection.get_offsets()
self.collection.set_array(path.Path(verts).contains_points(data))
canvas = self.collection.figure.canvas
canvas.draw_idle()
del self.lasso
def on_press(self, event):
canvas = self.collection.figure.canvas
if event.inaxes is not self.collection.axes or canvas.widgetlock.locked():
return
self.lasso = Lasso(event.inaxes, (event.xdata, event.ydata), self.callback)
canvas.widgetlock(self.lasso) ## acquérir un verrou sur le dessin du widget
def on_release(self, event):
canvas = self.collection.figure.canvas
if hasattr(self, 'lasso') and canvas.widgetlock.isowner(self.lasso):
canvas.widgetlock.release(self.lasso)
Créer le graphique
Maintenant, utilisez la classe LassoManager pour créer un graphique interactif. La fonction np.random.rand génère des points de données aléatoires qui seront tracés.
if __name__ == '__main__':
np.random.seed(19680801)
ax = plt.figure().add_subplot(
xlim=(0, 1), ylim=(0, 1), title='Lasso points using left mouse button')
manager = LassoManager(ax, np.random.rand(100, 2))
plt.show()
Sommaire
Dans ce laboratoire, vous avez appris à utiliser Matplotlib pour créer un graphique interactif qui permet aux utilisateurs de sélectionner un ensemble de points à l'aide d'un outil de lasso. Vous avez également appris à utiliser une fonction de rappel pour changer la couleur des points sélectionnés. Cette fonctionnalité peut être étendue à d'autres projets qui nécessitent une sélection de données interactive.