Skip to content
Related Articles

Related Articles

Improve Article

Matplotlib.pyplot.connect() in Python

  • Last Updated : 03 May, 2020
Geek Week

Matplotlib is a library in Python and it is numerical – mathematical extension for NumPy library. Pyplot is a state-based interface to a Matplotlib module which provides a MATLAB-like interface.

matplotlib.pyplot.connect() Function

This method is used to connect an event with string s to a function.

Syntax: matplotlib.pyplot.connect(s, func)

Parameters: This method accept the following parameters that are described below:
s(str): One of the following events ids:
1. ‘button_press_event’
2. ‘button_release_event’
3. ‘draw_event’
4. ‘key_press_event’
5. ‘key_release_event’
6. ‘motion_notify_event’
7. ‘pick_event’
8. ‘resize_event’
9. ‘scroll_event’
10. ‘figure_enter_event’,
11. ‘figure_leave_event’,
12. ‘axes_enter_event’,
13. ‘axes_leave_event’
14. ‘close_event’.
func(callable): The callback function to be executed, which must have the signature:
def func(event: Event) -> Any

Returns(cid): A connection id that can be used with FigureCanvasBase.mpl_disconnect.

Example 1 :

# matplotlib.pyplot.connect()
from matplotlib.backend_bases import MouseButton
import matplotlib.pyplot as plt
import numpy as np
t = np.arange(0.0, 1.0, 0.01)
s = np.sin(2 * np.pi * t)
fig, ax = plt.subplots()
ax.plot(t, s)
def on_move(event):
    # get the x and y pixel coords
    x, y = event.x, event.y
    if event.inaxes:
        ax = event.inaxes  # the axes instance
        print('data coords % f % f' % (event.xdata,
def on_click(event):
    if event.button is MouseButton.LEFT:
        print('disconnecting callback')
binding_id = plt.connect('motion_notify_event',
plt.connect('button_press_event', on_click)

Output :


Example 2 :

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("(% 3.2f, % 3.2f) --> (% 3.2f, % 3.2f)" % (x1, y1, x2, y2))
    print(" The button you used were: % s % s" % (eclick.button, 
def toggle_selector(event):
    print(' Key pressed.')
    if event.key in ['Q', 'q'] and
        print(' RectangleSelector deactivated.')
        print(' RectangleSelector activated.')
# make a new plotting range
fig, current_ax = plt.subplots()
# If N is large one can see
N = 100000
# improvement by use blitting ! 
# plt.plot(x, +np.sin(.2 * np.pi * x), 
# lw = 3.5, c ='b', alpha =.7)  
# plot something
x = np.linspace(0.0, 10.0, N)
plt.plot(x, +np.cos(.2 * np.pi * x), 
         lw = 3.5, c ='c', alpha =.5)
plt.plot(x, -np.sin(.2 * np.pi * x), 
         lw = 3.5, c ='r', alpha =.3)
print("\n      click  -->  release")
# drawtype is 'box' or 'line' or 'none'
toggle_selector.RS = RectangleSelector(current_ax, line_select_callback,
                                       drawtype ='box',
                                       useblit = True,
                                       button =[1, 3],  # don't use middle button
                                       minspanx = 5, minspany = 5,
                                       spancoords ='pixels',
                                       interactive = True)
plt.connect('key_press_event', toggle_selector)

Output :



 Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.  

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course

My Personal Notes arrow_drop_up
Recommended Articles
Page :