博文链接:
问题:在检查SSD代码时,在callback.py
文件中发现出现了matplotlib.use('agg')
的语句。PyCharm
中不显示绘图。
相关示例:
1 | import numpy as np |
原理分析:
实际上,这样的理解是表面的,这个语句确实会使得在Pycharm
运行时无法显示图,但是必须注意,这是其原理导致的,而这个语句并不是设置Pycharm
不显示图的语句,其实前述的代码中,删掉 plt.show()
,也不会显示图片。
matplotlib
的use()
命令其实是用来配置matplotlib
的backend
(后端)的命令。所谓后端,就是一个渲染器,用于将前端代码渲染成我们想要的图像。后端详细的解释可参考博客:matplotlib中什么是后端
对于用户接口,典型的渲染器是Agg
,它是使用Anti-Grain Geometry C++
库来产生光栅(像素)图。
那么为什么这样设置Pycharm
会导致其不显示图片呢?
可以查看一下目前的后端设置。方法是执行下面代码。
1 | import matplotlib |
也就是说,Pycharm运行的时候,默认的后端是Qt5Agg
。
实际上,Agg
渲染器是非交互式的后端,没有GUI界面,所以不显示图片,它是用来生成图像文件。Qt5Agg
是意思是Agg渲染器输出到Qt5绘图面板,它是交互式的后端,拥有在屏幕上展示的能力