最近在使用linux服务器画图的时候突然遇到了如下报错:
No protocol specified
qt.qpa.screen: QXcbConnection: Could not connect to display :0
Could not connect to any X display.
没有使用plt.show()或者imshow()之类的操作。在.bashrc中更改DISPLAY:=0也没有办法解决。
解决方案:
import matplotlib
matplotlib.use('Agg') # 一定要加在import matplotlib.pyplot as plt前面。
import matplotlib.pyplot as plt
matplotlib的use()命令其实是用来配置matplotlib的backend (后端)的命令。
>>> import matplotlib
>>> print(matplotlib.get_backend())
Qt5Agg
>>>
实际上,Agg 渲染器是非交互式的后端,没有GUI界面,所以不显示图片,但是拥有写入到文件中的能力。Qt5Agg 是意思是Agg渲染器输出到绘图面板,它是交互式的后端,拥有在屏幕上展示的能力。