导入matplotlib绘制图像无显示且无报错该如何解决?
matplotlib执行绘图代码后无图像显示的原因与解决方案
产生原因
- 未显式调用渲染展示方法:matplotlib的绘图函数只是生成绘图对象,不会默认触发窗口渲染,需要主动调用展示方法才能弹出图像窗口
- 后端配置不匹配:matplotlib使用了无GUI渲染能力的后端(如
AGG、PS等非交互后端),无法生成可视化窗口 - 运行环境限制:如果是在无图形界面的服务器、远程SSH会话中执行代码,没有图形输出通道,自然无法展示图像
- 交互环境设置问题:如果在Jupyter等Notebook环境中运行,未开启matplotlib的行内渲染魔术命令
解决方案
- 补充显式展示调用
在绘图代码末尾添加plt.show()即可触发窗口渲染,修改后的代码如下:
import matplotlib.pyplot as plt import numpy as np x = np.linspace(0,20,21) plt.plot(x) plt.show()
注:如果是在Jupyter Notebook环境中,可以先运行%matplotlib inline开启行内展示,无需每次调用plt.show()即可直接渲染图像
- 切换为支持GUI的交互后端
查看当前后端的命令:
import matplotlib print(matplotlib.get_backend())
如果返回的是非交互后端,可临时切换为对应系统的交互后端,比如Windows/macOS/Linux通用的TkAgg后端,在导入pyplot前添加配置:
import matplotlib matplotlib.use('TkAgg') import matplotlib.pyplot as plt
如果需要永久修改后端,可编辑matplotlib配置文件matplotlibrc,修改backend参数为对应交互后端即可。
- 无图形界面环境的处理
如果是在服务器等无图形界面环境运行,无需展示窗口,可直接将图像保存到本地:
plt.plot(x) plt.savefig('test_plot.png')
如果需要远程展示,可配置SSH的X11转发功能,或者将代码放到本地带图形界面的环境运行。
内容的提问来源于stack exchange,提问作者Filip Antonijevic
相关产品推荐
相关产品推荐

