.. only:: html .. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_gallery_widgets_rectangle_selector.py: ================== 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. .. image:: /gallery/widgets/images/sphx_glr_rectangle_selector_001.png :alt: Click and drag to draw a rectangle. Press 't' to toggle the selector on and off. :class: sphx-glr-single-img .. code-block:: default 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() .. _sphx_glr_download_gallery_widgets_rectangle_selector.py: .. only :: html .. container:: sphx-glr-footer :class: sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: rectangle_selector.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: rectangle_selector.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature Keywords: matplotlib code example, codex, python plot, pyplot `Gallery generated by Sphinx-Gallery `_