NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #5294 most downloaded on PyPI
Interactive data selection cursors for Matplotlib.
Last release 6 months ago
18 Mar 2026
Ships fairly regularly
a new release about every 10 months
Nearly every release is documented
notes for 12 of 12 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
12 releases · first in 2016
- Fix disabling of bindings.
Fix disabling of bindings.
Mark Matplotlib 3.10.3 as incompatible.
Mark Matplotlib 3.10.3 as incompatible.
Require registration in mpl.rcParams["figure.hooks"] for the MPLCURSORS environment variable.
Added Cursor.select_at to trigger a selection at a given position. This API is experimental and subject to future changes.
Support new-style (Matplotlib≥3.8) contour plots.
Support ~matplotlib.offsetbox.AnnotationBbox, ~matplotlib.image.BboxImage, ~matplotlib.offsetbox.OffsetBox.
Support highlighting ~matplotlib.collections.LineCollection and non-scatter ~matplotlib.collections.PathCollection.
Modified the (semi-internal) signature of Cursor.add_selection to be more robust against sub-artists without a .axes attribute.
One column per quarter.
Remove the deprecated Selection.target.index.
Fix compatibility with Matplotlib 3.9 and numpy 2.
Fix disabling multiple key bindings.
Remove the deprecated Selection.target.index.
Require Python 3.7 (due to setuptools support ranges); mark Matplotlib 3.7.1 as incompatible.
Require Python 3.7 (due to setuptools support ranges); mark Matplotlib 3.7.1 as incompatible.
Highlights can be removed by right-clicking anywhere on the highlighting artist, not only on the annotation.
Fix compatibility with Matplotlib 3.6 and with PEP517 builds.
Fix compatibility with Matplotlib 3.6 and with PEP517 builds.
Non-multiple cursors can now be dragged.
No new features; minor changes to docs.
No new features; minor changes to docs.
Breaking change: index is now a direct attribute of the Selection, rather than a sub-attribute via target. (Selection.target.index has been deprecated…
Breaking change: index is now a direct attribute of the Selection, rather than a sub-attribute via target. (Selection.target.index has been deprecated and will be removed in the future.)
Additional annotations are no longer created when dragging a multiple cursor.
Clicking on an annotation also updates the "current" selection for keyboard motion purposes.
Disabling a cursor also makes it unresponsive to motion keys.
Hovering is still active when the pan or zoom buttons are pressed (but not if there's a pan or zoom currently being selected).
Annotations are now ~matplotlib.figure.Figure-level artists, rather than Axes-level ones (so as to be drawn on top of twinned axes, if present).
Invisible artists are now unpickable (patch suggested by @eBardieCT).
Invisible artists are now unpickable (patch suggested by @eBardieCT).
The bindings kwarg can require modifier keys for mouse button events.
Transient hovering (suggested by @LaurenceMolloy).
Switch to supporting only "new-style" (~matplotlib.collections.LineCollection) ~matplotlib.axes.Axes.stem plots.
Cursors are drawn with zorder=np.inf.
Updated dependency to Matplotlib 3.1 (Annotation.{get,set}_anncoords), and thus Python 3.6, numpy 1.11.
Updated dependency to Matplotlib 3.1 (Annotation.{get,set}_anncoords), and thus Python 3.6, numpy 1.11.
Display value in annotation for colormapped scatter plots.
Improve formatting of image values.
The add/remove callbacks no longer rely on Matplotlib's ~matplotlib.cbook.CallbackRegistry. Cursor.connect now returns the callback itself (simplifying its use as a decorator). Cursor.disconnect now takes two arguments: the event name and the callback function. Strong references are kept for the callbacks.
Overlapping annotations are now removed one at a time.
Re-clicking on an already selected point does not create a new annotation (patch suggested by @schneeammer).
~matplotlib.collections.PatchCollections are now pickable (on their borders) (patch modified from a PR by @secretyv).
Support ~matplotlib.collections.Collections where ~matplotlib.collections.Collection.get_offset_transform() is not transData (patch suggested by @yt87).
Support setting both hover and multiple.
The artist attribute of Selections is correctly set to the ~matplotlib.container.Container when picking a ~matplotlib.container.Container, rather than to the internally used wrapper.
No new features; test suite updated for compatibility with Matplotlib 3.0.
No new features; test suite updated for compatibility with Matplotlib 3.0.
Miscellaneous bugfixes.
Updated dependency to Matplotlib 2.1 (2.0 gives more information about orientation of bar plots; 2.1 improves the handling of step plots).
Updated dependency to Matplotlib 2.1 (2.0 gives more information about orientation of bar plots; 2.1 improves the handling of step plots).
Setting MPLCURSORS hooks Figure.draw <matplotlib.figure.Figure.draw> (once per figure only) instead of plt.show <matplotlib.pyplot.show>, thus supporting figures created after the first call to plt.show <matplotlib.pyplot.show>.
Automatic positioning and alignment of annotation text.
Selections on images now have an index as well.
Selections created on ~matplotlib.axes.Axes.scatter plots, ~matplotlib.axes.Axes.errorbar plots, and ~matplotlib.axes.Axes.polar plots can now be moved.
~matplotlib.collections.PathCollections not created by ~matplotlib.axes.Axes.scatter are now picked as paths, not as collections of points.
~matplotlib.patches.Patches now pick on their borders, not their interior.
Improved picking of ~matplotlib.container.Containers.
In hover mode, annotations can still be removed by right-clicking.
Miscellaneous bugfixes.
- First public release.
First public release.
Your coding agent can read these notes before it upgrades. Set up the MCP server →