Note
Click here to download the full example code
Rectangle SelectorΒΆ
Do a mouseclick somewhere, move the mouse to some destination, release
the button. This class gives click- and release-events and also draws
a line or a box from the click-point to the actual mouseposition
(within the same axes) until the button is released. Within the
method self.ignore()
it is checked whether the button from eventpress
and eventrelease are the same.
from matplotlib.widgets import RectangleSelector
import numpy as np
import matplotlib.pyplot as plt
def line_select_callback(eclick, erelease):
"""
Callback for line selection.
*eclick* and *erelease* are the press and release events.
"""
x1, y1 = eclick.xdata, eclick.ydata
x2, y2 = erelease.xdata, erelease.ydata
print(f"({x1:3.2f}, {y1:3.2f}) --> ({x2:3.2f}, {y2:3.2f})")
print(f" The buttons you used were: {eclick.button} {erelease.button}")
def toggle_selector(event):
print(' Key pressed.')
if event.key == 't':
if toggle_selector.RS.active:
print(' RectangleSelector deactivated.')
toggle_selector.RS.set_active(False)
else:
print(' RectangleSelector activated.')
toggle_selector.RS.set_active(True)
fig, ax = plt.subplots()
N = 100000 # If N is large one can see improvement by using blitting.
x = np.linspace(0, 10, N)
ax.plot(x, np.sin(2*np.pi*x)) # plot something
ax.set_title(
"Click and drag to draw a rectangle.\n"
"Press 't' to toggle the selector on and off.")
# drawtype is 'box' or 'line' or 'none'
toggle_selector.RS = RectangleSelector(ax, line_select_callback,
drawtype='box', useblit=True,
button=[1, 3], # disable middle button
minspanx=5, minspany=5,
spancoords='pixels',
interactive=True)
fig.canvas.mpl_connect('key_press_event', toggle_selector)
plt.show()
Keywords: matplotlib code example, codex, python plot, pyplot Gallery generated by Sphinx-Gallery