Note
Go to the endto download the full example code.
Select indices from a collection using polygon selector#
Shows how one can select indices of a polygon interactively.
importnumpyasnpfrommatplotlib.pathimportPathfrommatplotlib.widgetsimportPolygonSelectorclassSelectFromCollection:""" Select indices from a matplotlib collection using `PolygonSelector`. Selected indices are saved in the `ind` attribute. This tool fades out the points that are not part of the selection (i.e., reduces their alpha values). If your collection has alpha < 1, this tool will permanently alter the alpha values. Note that this tool selects collection objects based on their *origins* (i.e., `offsets`). Parameters ---------- ax : `~matplotlib.axes.Axes` Axes to interact with. collection : `matplotlib.collections.Collection` subclass Collection you want to select from. alpha_other : 0 <= float <= 1 To highlight a selection, this tool sets all selected points to an alpha value of 1 and non-selected points to *alpha_other*. """def__init__(self,ax,collection,alpha_other=0.3):self.canvas=ax.figure.canvasself.collection=collectionself.alpha_other=alpha_otherself.xys=collection.get_offsets()self.Npts=len(self.xys)# Ensure that we have separate colors for each objectself.fc=collection.get_facecolors()iflen(self.fc)==0:raiseValueError('Collection must have a facecolor')eliflen(self.fc)==1:self.fc=np.tile(self.fc,(self.Npts,1))self.poly=PolygonSelector(ax,self.onselect,draw_bounding_box=True)self.ind=[]defonselect(self,verts):path=Path(verts)self.ind=np.nonzero(path.contains_points(self.xys))[0]self.fc[:,-1]=self.alpha_otherself.fc[self.ind,-1]=1self.collection.set_facecolors(self.fc)self.canvas.draw_idle()defdisconnect(self):self.poly.disconnect_events()self.fc[:,-1]=1self.collection.set_facecolors(self.fc)self.canvas.draw_idle()if__name__=='__main__':importmatplotlib.pyplotaspltfig,ax=plt.subplots()grid_size=5grid_x=np.tile(np.arange(grid_size),grid_size)grid_y=np.repeat(np.arange(grid_size),grid_size)pts=ax.scatter(grid_x,grid_y)selector=SelectFromCollection(ax,pts)print("Select points in the figure by enclosing them within a polygon.")print("Press the 'esc' key to start a new polygon.")print("Try holding the 'shift' key to move all of the vertices.")print("Try holding the 'ctrl' key to move a single vertex.")plt.show()selector.disconnect()# After figure is closed print the coordinates of the selected pointsprint('\nSelected points:')print(selector.xys[selector.ind])

Select points in the figure by enclosing them within a polygon.Press the 'esc' key to start a new polygon.Try holding the 'shift' key to move all of the vertices.Try holding the 'ctrl' key to move a single vertex.Selected points:[]
References
The use of the following functions, methods, classes and modules is shownin this example: