Matplotlib 绘图出现报错
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 版本更新后,跟原有代码不匹配。。。
实验结果确实证实了该问题!!!
所以没真正报错的原有有两个:
- 没有图形显示终端
- 版本不匹配
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版本
解决。如果大家有什么解决方案的话可以评论留言,这边会根据最新的内容进行更新!!!
如果觉得这篇文章对你有用,记得点赞、收藏并分享给你的小伙伴们哦😄。
欢迎来稿
欢迎投稿合作,投稿请遵循科学严谨、内容清晰明了的原则!!!! 有意者可以后台私信!!