官方示例图
https://www.osgeo.cn/matplotlib/gallery/index.html
问题描述
使用pycharm写代码,导入的包多了之后,命令 plt.show()
不工作
可能的原因
其他包设置了matplotlib 的backend 为 ‘Agg’ 模式,导致图片只能保存,不会显示
如其他的包设置了’Agg’ 为backend
mlp.use('Agg')
解决办法
参考博文:”matplotlib.use(‘agg’)”语句的作用机理中的解决办法
先查询当前的backend
import matplotlib
matplotlib.get_backend()
发现输出是’Agg’,需要切换backend
import matplotlib as mpl
mpl.use('Qt5Agg')
import matplotlib.pyplot as plt
但是设置为”Qt5Agg”报错
ImportError: Cannot load backend 'Qt5Agg' which requires the 'qt5' interactive framework, as 'headless' is currently running
成功解决
结合前面的尝试发现,pycharm中plt无法显示图片,是因为导入的其他包修改了绘图的backend,因此需要新建一个简单的python文件(以减少导入的其他包改变backend)查询默认的backend。然后在目标代码中将backend修改成查询到的backend即可。
- 新建.py 文件查询backend
import matplotlib
matplotlib.get_backend()
- 在目标代码绘图中设置backend
import matplotlib as mpl
mpl.use('module://backend_interagg')
import matplotlib.pyplot as plt
然后绘图
import matplotlib.pyplot as plt
x = list(range(15))
y1 = list(map(lambda e: 6-e,x[:5]))
y2 = list(map(lambda e: e,x[5:]))
plt.plot(x,y1+y2)
plt.show()
总结
- 缺失一些支持图形化界面的包的时候(如服务器上运行),如果只想将图片输出到文件,用Agg就行
mlp.use('Agg')
- 如果想在代码运行的时候,显示图片,则要根据系统的实际情况设置backend。在没有导入其他包的情况下查询到的backend一般就是可以显示图像的。
mpl.use('module://backend_interagg')
jupyter中的backend
module://matplotlib_inline.backend_inline
pycharm中交互式界面中的backend
module://backend_interagg
其他推荐
官网对于断轴的介绍
https://www.osgeo.cn/matplotlib/gallery/subplots_axes_and_figures/broken_axis.html
Original: https://blog.csdn.net/Julse/article/details/127093899
Author: Julse
Title: pycharm 无法显示matplotlib的绘图 – 查询显示绘图的backend – Agg -module://backend_interagg
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/766647/
转载文章受原作者版权保护。转载请注明原作者出处!