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

物联沃分享整理
物联沃-IOTWORD物联网 » UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figur

发表评论