- matplotlib 版本3.8.2
- python 版本3.10
问题表述:
-
使用PyCharm的右键run会出现报错信息,但是在pycharm 的终端窗口(虚拟环境下)使用命令(python test.py)不会报错
-
出错代码位置:
plt.plot(year, rank, label='大学')
-
报错信息:
Traceback (most recent call last):
File "D:\work_python\college3_python\week13\chinaUniversity.py", line 68, in <module>
main(2023)
File "D:\work_python\college3_python\week13\chinaUniversity.py", line 15, in main
analysis()
File "D:\work_python\college3_python\week13\chinaUniversity.py", line 61, in analysis
plt.plot(year, rank, label='大学')
File "D:\condaEnv\data_analysis\lib\site-packages\matplotlib\pyplot.py", line 3575, in plot
return gca().plot(
File "D:\condaEnv\data_analysis\lib\site-packages\matplotlib\pyplot.py", line 2525, in gca
return gcf().gca()
File "D:\condaEnv\data_analysis\lib\site-packages\matplotlib\pyplot.py", line 1000, in gcf
return figure()
File "D:\condaEnv\data_analysis\lib\site-packages\matplotlib\pyplot.py", line 934, in figure
manager = new_figure_manager(
File "D:\condaEnv\data_analysis\lib\site-packages\matplotlib\pyplot.py", line 464, in new_figure_manager
_warn_if_gui_out_of_main_thread()
File "D:\condaEnv\data_analysis\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:\condaEnv\data_analysis\lib\site-packages\matplotlib\pyplot.py", line 280, in _get_backend_mod
switch_backend(rcParams._get("backend")) # type: ignore[attr-defined]
File "D:\condaEnv\data_analysis\lib\site-packages\matplotlib\pyplot.py", line 343, in switch_backend
canvas_class = module.FigureCanvas
AttributeError: module 'backend_interagg' has no attribute 'FigureCanvas'. Did you mean: 'FigureCanvasAgg'?
Process finished with exit code 1
解决办法(两种)
- Matplotlib的后端可能导致问题。尝试在你出错的py代码开头添加以下行,更改Matplotlib的后端:
import matplotlib
matplotlib.use('TkAgg') # 选择合适的后端,例如TkAgg、Qt5Agg等
笔者尝试成功,TkAgg、Qt5Agg任选一个,右键 run 不会再出现报错
- matplotlib的版本问题
笔者本来使用的是matplotlib=3.8.2版本的,改为3.5.2版本就可以了,右键 run 不会再出现报错
在虚拟环境下执行以下命令
conda uninstall matplotlib
conda uninstall matplotlib-base
conda uninstall matplotlib=3.5.2