The matplotlib.lines.VertexSelector class belongs to the matplotlib.lines module. The matplotlib.lines module contains all the 2D line class that can be drawn with a variety of line styles, markers, and colors. matplotlib.lines.VertexSelector class is used to for managing the callbacks that maintain a list of selected vertices for matplotlib.lines.Line2D. The process_selected() function gets overridden by the derived classes for the picks.
Syntax: class matplotlib.lines.VertexSelector(line)
Parameter:
- lines: These represent the lines that are defined for the plotting.
Methods of the class:
- onpick(self, event): The selected set of indices gets updated when the line is picked using this method.
- process_selected(self, ind, xs, ys): By default it does the implementation of “do nothing” of the process_selected() method. The ‘ind’ represents the indices of the selected vertices whereas ‘xs’ and ‘ys’ are the coordinates of the selected vertices.
Example #1:
Python3
import numpy as npimport matplotlib.pyplot as pltimport matplotlib.lines as lines# class for highlighting selected areaclass Highlighter(lines.VertexSelector): # constructor for the highlighter class def __init__(self, line, fmt ='ro', **kwargs): lines.VertexSelector.__init__(self, line) self.markers, = self.axes.plot([], [], fmt, **kwargs) # helper function process selected area and plot graph accordingly def process_selected(self, ind, xs, ys): self.markers.set_data(xs, ys) self.canvas.draw()figure, ax = plt.subplots()x_axis, y_axis = np.random.rand(2, 30)line, = ax.plot(x_axis, y_axis, 'bs-', picker = 5)selector = Highlighter(line)plt.show() |
Output:
Example 2:
Python3
import matplotlib.pyplot as pltimport matplotlib.lines as linesfrom matplotlib.collections import PathCollectionlines.VertexSelector# class for plot clicked areaclass dragged_lines: # constructor for the dragged_lines class def __init__(self, ax): self.ax = ax self.c = ax.get_figure().canvas self.line = lines.Line2D(x, y, picker = 5, marker ='o', markerfacecolor ='g', color ='y') self.ax.add_line(self.line) self.c.draw_idle() self.sid = self.c.mpl_connect('pick_event', self.lineclicker) def lineclicker(self, event): if event.artist: print("line selected ", event.artist) self.follower = self.c.mpl_connect("motion_notify_event", self.mouse_follower) self.releaser = self.c.mpl_connect("button_press_event", self.release_after_click) def mouse_follower(self, event): self.line.set_data([event.xdata, event.ydata]) self.c.draw_idle() def release_after_click(self, event): data = self.line.get_data() print(data) self.c.mpl_disconnect(self.releaser) self.c.mpl_disconnect(self.follower)figure = plt.figure()axes = figure.add_subplot(111)x_axis, y_axis = [2, 4, 5, 7], [8, 6, 12, 9]axes.plot(x_axis, y_axis)Vline = dragged_lines(axes)plt.show() |
Output:

