You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用mplcursors点击画布时触发AttributeError问题求助

mplcursors点击画布空白区域触发AttributeError错误

使用mplcursors实现悬停显示线条标签时,点击线条后再点击画布空白区域会触发AttributeError: 'NoneType' object has no attribute 'canvas'错误,甚至官网提供的基础示例代码也能复现该问题。

复现代码

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

data = np.outer(range(10), range(1, 5))

fig, ax = plt.subplots()
lines = ax.plot(data)
ax.set_title("Click somewhere on a line.\nRight-click to deselect.\n"
             "Annotations can be dragged.")

mplcursors.cursor(lines)  # 或者直接使用 mplcursors.cursor()

plt.show()

报错信息

H:\>python C:\Users\m312945\Desktop\Paul\Scripts\Cluster\test_animation_test_mp.py
Traceback (most recent call last):
  File "C:\Python39\lib\site-packages\matplotlib\cbook\__init__.py", line 304, in process
    func(*args, **kwargs)
  File "C:\Python39\lib\site-packages\matplotlib\offsetbox.py", line 1550, in on_release
    if self._check_still_parented() and self.got_artist:
  File "C:\Python39\lib\site-packages\matplotlib\offsetbox.py", line 1560, in _check_still_parented
    self.disconnect()
  File "C:\Python39\lib\site-packages\matplotlib\offsetbox.py", line 1568, in disconnect
    self.canvas.mpl_disconnect(cid)
  File "C:\Python39\lib\site-packages\matplotlib\offsetbox.py", line 1517, in <lambda>
    canvas = property(lambda self: self.ref_artist.figure.canvas)
AttributeError: 'NoneType' object has no attribute 'canvas'

解决方法

方案1:升级mplcursors到最新版本

该bug在mplcursors的后续更新中已被修复,执行以下命令完成升级:

pip install --upgrade mplcursors

方案2:手动修改matplotlib源码(临时方案)

如果无法升级依赖,可以修改matplotlib的offsetbox.py文件,在_check_still_parented方法中增加空值判断:
找到C:\Python39\lib\site-packages\matplotlib\offsetbox.py中的_check_still_parented函数,修改为:

def _check_still_parented(self):
    if self.ref_artist is None or self.ref_artist.figure is None:
        self.disconnect()
        return False
    return True

内容的提问来源于stack exchange,提问作者Paul K.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 20:40:21