WSL环境下调用plt.show()后Matplotlib无绘图显示问题排查
解决WSL下Matplotlib plt.show()无图像显示的问题
1. 检查并切换Matplotlib后端
WSL终端无图形界面,Matplotlib默认后端可能为Agg(仅支持保存图片,不支持实时显示)。先验证当前后端:
import matplotlib as mpl print(mpl.get_backend())
若输出为Agg,按以下步骤调整:
- 安装Tkinter依赖(WSL Ubuntu环境):
sudo apt-get install python3-tk
- 修改代码,指定交互式后端:
import matplotlib matplotlib.use('TkAgg') import matplotlib.pyplot as plt x = [1,2,3] y = [0,1,2] plt.plot(x,y) plt.show()
2. 利用VS Code的图形转发功能
若使用VS Code开发:
- 确保安装Remote - WSL扩展
- 在VS Code中打开脚本文件,点击右上角运行按钮执行,VS Code会自动处理WSL的图形输出转发,无需额外配置。
3. 配置WSL的X服务器转发(终端运行场景)
WSL本身无图形输出能力,需借助Windows端X服务器实现显示:
- 在Windows上安装X服务器软件(如VcXsrv、Xming)
- 启动X服务器,开启“允许来自网络的连接”权限(注意临时关闭相关防火墙限制)
- 在WSL终端中设置环境变量:
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
设置完成后再运行Python脚本,图形会转发到Windows的X服务器窗口显示。
4. 临时保存图片验证代码逻辑
若仅需确认代码功能正常,可跳过显示环节直接保存图片:
import matplotlib.pyplot as plt x = [1,2,3] y = [0,1,2] plt.plot(x,y) plt.savefig('test_plot.png')
运行后查看当前目录下的test_plot.png,若图片正常生成,说明代码逻辑无问题,仅显示环节存在配置缺失。
内容的提问来源于stack exchange,提问作者inept_python
相关产品推荐
相关产品推荐

