Introduction
Dans ce laboratoire, vous allez apprendre à sélectionner de manière interactive des points de données avec l'outil lasso à l'aide de Python Matplotlib. Vous allez tracer un graphique en nuage de points puis sélectionner quelques points en traçant une boucle lasso autour des points sur le graphique. Pour tracer, cliquez simplement sur le graphique, maintenez le clic et faites glisser le curseur autour des points que vous devez sélectionner.
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'étude 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
Importer les bibliothèques nécessaires, y compris numpy, Path et LassoSelector.
import numpy as np
from matplotlib.path import Path
from matplotlib.widgets import LassoSelector
Créer la classe Sélecteur
Créez la classe SelectFromCollection qui sélectionnera des indices à partir d'une collection Matplotlib en utilisant LassoSelector.
class SelectFromCollection:
"""
Sélectionnez des indices à partir d'une collection matplotlib en utilisant `LassoSelector`.
Les indices sélectionnés sont enregistrés dans l'attribut `ind`. Cet outil assombrit les
points qui ne font pas partie de la sélection (c'est-à-dire réduit leurs valeurs d'alpha).
Si votre collection a un alpha < 1, cet outil modifiera définitivement les valeurs d'alpha.
Notez que cet outil sélectionne les objets de collection en fonction de leurs *origine*
(c'est-à-dire `offsets`).
Paramètres
----------
ax : `~matplotlib.axes.Axes`
Axes avec lequel interagir.
collection : `matplotlib.collections.Collection` sous-classe
Collection à partir de laquelle vous voulez sélectionner.
alpha_other : 0 <= float <= 1
Pour mettre en évidence une sélection, cet outil définit tous les points sélectionnés
à une valeur d'alpha de 1 et les points non sélectionnés à *alpha_other*.
"""
def __init__(self, ax, collection, alpha_other=0.3):
self.canvas = ax.figure.canvas
self.collection = collection
self.alpha_other = alpha_other
self.xys = collection.get_offsets()
self.Npts = len(self.xys)
## Assurez-vous d'avoir des couleurs distinctes pour chaque objet
self.fc = collection.get_facecolors()
if len(self.fc) == 0:
raise ValueError('La collection doit avoir une couleur de face')
elif len(self.fc) == 1:
self.fc = np.tile(self.fc, (self.Npts, 1))
self.lasso = LassoSelector(ax, onselect=self.onselect)
self.ind = []
def onselect(self, verts):
path = Path(verts)
self.ind = np.nonzero(path.contains_points(self.xys))[0]
self.fc[:, -1] = self.alpha_other
self.fc[self.ind, -1] = 1
self.collection.set_facecolors(self.fc)
self.canvas.draw_idle()
def disconnect(self):
self.lasso.disconnect_events()
self.fc[:, -1] = 1
self.collection.set_facecolors(self.fc)
self.canvas.draw_idle()
Créer le graphique en nuage de points
Créez un graphique en nuage de points à l'aide de données générées aléatoirement.
np.random.seed(19680801)
data = np.random.rand(100, 2)
subplot_kw = dict(xlim=(0, 1), ylim=(0, 1), autoscale_on=False)
fig, ax = plt.subplots(subplot_kw=subplot_kw)
pts = ax.scatter(data[:, 0], data[:, 1], s=80)
selector = SelectFromCollection(ax, pts)
Accepter les points sélectionnés
Acceptez les points sélectionnés en utilisant la touche Entrée et affichez-les dans la console.
def accept(event):
if event.key == "enter":
print("Points sélectionnés :")
print(selector.xys[selector.ind])
selector.disconnect()
ax.set_title("")
fig.canvas.draw()
fig.canvas.mpl_connect("key_press_event", accept)
ax.set_title("Appuyez sur Entrée pour accepter les points sélectionnés.")
plt.show()
Sommaire
Dans ce laboratoire, vous avez appris à sélectionner de manière interactive des points de données avec l'outil Lasso à l'aide de Python Matplotlib. Vous avez créé un graphique en nuage de points, sélectionné quelques points en traçant une boucle Lasso autour des points sur le graphique, puis accepté les points sélectionnés en utilisant la touche Entrée.