You are reading documentation for the unreleased version of Matplotlib. Try searching for the released version of this page instead?
Applications are open for the 2018 John Hunter Matplotlib Summer Fellowship. Apply now!
Version 2.2.2.post1768+g23420a4c1
Fork me on GitHub

Related Topics

Looking GlassΒΆ

Example using mouse events to simulate a looking glass for inspecting data.

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches

# Fixing random state for reproducibility

x, y = np.random.rand(2, 200)

fig, ax = plt.subplots()
circ = patches.Circle((0.5, 0.5), 0.25, alpha=0.8, fc='yellow')

ax.plot(x, y, alpha=0.2)
line, = ax.plot(x, y, alpha=1.0, clip_path=circ)
ax.set_title("Left click and drag to move looking glass")

class EventHandler(object):
    def __init__(self):
        fig.canvas.mpl_connect('button_press_event', self.onpress)
        fig.canvas.mpl_connect('button_release_event', self.onrelease)
        fig.canvas.mpl_connect('motion_notify_event', self.onmove)
        self.x0, self.y0 =
        self.pressevent = None

    def onpress(self, event):
        if event.inaxes != ax:

        if not circ.contains(event)[0]:

        self.pressevent = event

    def onrelease(self, event):
        self.pressevent = None
        self.x0, self.y0 =

    def onmove(self, event):
        if self.pressevent is None or event.inaxes != self.pressevent.inaxes:

        dx = event.xdata - self.pressevent.xdata
        dy = event.ydata - self.pressevent.ydata = self.x0 + dx, self.y0 + dy

handler = EventHandler()

Keywords: matplotlib code example, codex, python plot, pyplot Gallery generated by Sphinx-Gallery