{"library":"mplcursors","title":"Interactive data selection cursors for Matplotlib","description":"mplcursors provides interactive data selection cursors for Matplotlib. It is inspired by mpldatacursor, offering a simplified API to add dynamic tooltips and annotations to plots, enhancing data exploration. The library is actively maintained, with its current version 0.7.1 released in March 2026.","language":"python","status":"active","last_verified":"Fri May 15","install":{"commands":["pip install mplcursors"],"cli":null},"imports":["from mplcursors import cursor"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import matplotlib.pyplot as plt\nimport numpy as np\nimport mplcursors\n\n# Generate some data\ndata = np.outer(range(10), range(1, 5))\nfig, ax = plt.subplots()\nlines = ax.plot(data)\n\nax.set_title(\n    \"Click somewhere on a line.\\nRight-click to deselect.\\n\" \"Annotations can be dragged.\"\n)\n\n# Enable interactive cursors on the plotted lines\nmplcursors.cursor(lines, hover=False) # hover=False means click to activate\n\nplt.show()","lang":"python","description":"This basic example demonstrates how to create a simple Matplotlib plot and then apply `mplcursors.cursor()` to enable interactive data selection and draggable annotations on the plotted lines. A left click creates a draggable annotation, and a right click removes it.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-15","installed_version":"0.7.1","pypi_latest":"0.7.1","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":7.4,"avg_import_s":2.52,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"mplcursors","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":2.4,"mem_mb":30.3,"disk_size":"177.7M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"mplcursors","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":7.5,"import_time_s":1.81,"mem_mb":30.3,"disk_size":"170M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"mplcursors","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":3.24,"mem_mb":33.1,"disk_size":"193.2M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"mplcursors","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":7,"import_time_s":2.86,"mem_mb":33.1,"disk_size":"184M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"mplcursors","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":2.81,"mem_mb":32.3,"disk_size":"180.1M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"mplcursors","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":6.7,"import_time_s":2.86,"mem_mb":32.3,"disk_size":"171M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"mplcursors","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":2.37,"mem_mb":32.6,"disk_size":"179.4M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"mplcursors","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":7.1,"import_time_s":2.55,"mem_mb":32.6,"disk_size":"170M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"mplcursors","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":2.15,"mem_mb":29.4,"disk_size":"181.5M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"mplcursors","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":8.7,"import_time_s":2.11,"mem_mb":29.4,"disk_size":"176M"}]}}