UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figur
UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.
1. 本文适用的场景
项目场景:平时正常导入matplotlib库没问题,运行代码时突然出现这个问题。
问题描述
—————————————————————– 分析报错原因——————————————————————
用户警告:matplotlib正在使用agg,agg是一个没有GUI画图的后端,因此调用 matplotlib.pyplot()不能画图
2.问题分析
import pandas_profiling
import matplotlib.pyplot as plt
# ......省略一大段代码
plt.show()
如果类似这样(导入库的顺序类似)写代码,结果会报像标题一样的警告。
先判断是否matplotlib库本身能否正常利用backend画图,输入以下代码,观察结果
import matplotlib
print(matplotlib.get_backend())
# 以下是你程序所使用的其他模块
# 。。。。。。。。。。
如果输出的是:module://backend_interagg
表明matpotlib库本身没有问题,可能是一些设置被修改了。
如果输出的不是上面的信息,就要考虑重新安装matplotlib了。
在终端处输入以下代码:
pip uninstall matplotlib
pip install matplotlib
3.解决方案
确定不是matplotlib库本身的原因,进行以下操作
# 导入第三方库
import matplotlib.pyplot as plt
import pandas_profiling
在第一步导入第三方库的时候
一定要把matplotlib库在 pandas_profiling 库前面
如上操作,并重新运行代码,如果能正常画图,即问题解决。
总结
1.对这个问题的反思:
如果调整库的导入顺序能够解决问题的话,
说明:matplotlib正常情况下gui设置采用的是 backend_interagg ,但是当matplotlib不是第一个被导入的模块,容易被其他模块将gui设置修改成agg(agg不支持GUI画图) 以上的例子就能够说明是 pandas_profiling 将matplotlib的backend改成了agg,故报WARNING错误。
2.以后的解决方案
当出现“平常代码能运行,库能正常使用,但写代码的是时候,内容不变,顺序稍微发生点改变就报错”问题时,可以多考虑考虑这种请款。
即调整库的导入顺序,或者比较和源代码的不同之处。
来源:56kb