Bug小能手系列(python)_14: AttributeError: module ‘backend_interagg‘ has no attribute ‘FigureCanvas‘

0 引言

在使用Matplotlib 绘图时出现报错:

File “D:\Anaconda3\envs\EEG\lib\site-packages\matplotlib\pyplot.py”, line 934, in figure
manager = new_figure_manager(
File “D:\Anaconda3\envs\EEG\lib\site-packages\matplotlib\pyplot.py”, line 464, in new_figure_manager
_warn_if_gui_out_of_main_thread()
File “D:\Anaconda3\envs\EEG\lib\site-packages\matplotlib\pyplot.py”, line 441, in _warn_if_gui_out_of_main_thread
canvas_class = cast(type[FigureCanvasBase], _get_backend_mod().FigureCanvas)
File “D:\Anaconda3\envs\EEG\lib\site-packages\matplotlib\pyplot.py”, line 280, in _get_backend_mod
switch_backend(rcParams._get(“backend”)) # type: ignore[attr-defined]
File “D:\Anaconda3\envs\EEG\lib\site-packages\matplotlib\pyplot.py”, line 343, in switch_backend
canvas_class = module.FigureCanvas
AttributeError: module ‘backend_interagg’ has no attribute ‘FigureCanvas’

注意:报错对应的代码部分与实际出现错误的部分是不同的。具体报错截图如下所示:
在这里插入图片描述

1 报错原因

当前很多文章分析的结果是:其实是matplotlib 的 backend的默认渲染器是agg,agg是一个没有图形显示界面的终端,如果要图像正常显示,则需要切换为图形界面显示的终端TkAgg

但是,我是在Pycharm上使用的,存在图形显示的终端,不应该存在该问题的!!!

所以,我代码报错的原因可能是:matplotlib 版本更新后,跟原有代码不匹配。。。

实验结果确实证实了该问题!!!

所以没真正报错的原有有两个:

  1. 没有图形显示终端
  2. 版本不匹配

2 解决思路

2.1 更换默认渲染器

在声明库的时候增加以下代码即可:

import matplotlib
matplotlib.use('TkAgg')

得到的图像如下(会在Pycharm之外弹出窗口,为绘制的图像):
在这里插入图片描述

2.2 更换Matplotlib的版本

刚刚那种情况虽然可以解决问题,但是如果生成较多图片就会产生很多弹窗,没有直接在Pycharm侧边显现美观!!!
因此,我们采用更换版本的方式,这里选用的版本号为:Matplotlib==5.3.0
具体安装命令如下:

pip install matplotlib==3.5.0

安装完成后,运行代码,即可在侧边看到完整图像:
在这里插入图片描述

3. 总结

总的而言,感觉出现该错误主要是因为Matplotlib的版本的问题,可以通过设置渲染器更换Matplotlib版本解决。如果大家有什么解决方案的话可以评论留言,这边会根据最新的内容进行更新!!!

如果觉得这篇文章对你有用,记得点赞、收藏并分享给你的小伙伴们哦😄。

欢迎来稿

欢迎投稿合作,投稿请遵循科学严谨、内容清晰明了的原则!!!! 有意者可以后台私信!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sjx_alo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值