WSL2(Ubuntu22.04)执行Matplotlib代码卡顿并报FigureCanvasAgg警告
解决WSL2 Ubuntu 22.04中Matplotlib图形显示异常问题
先检查X11转发核心配置
- 打开WSL终端,执行
echo $DISPLAY,正常输出应为:0或带主机IP的:0格式。如果不对,手动设置环境变量:
设置完成后重新运行代码测试。export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0 - 确认XLaunch是在禁用访问控制模式下启动的——启动XLaunch时必须勾选
Disable access control,否则WSL的图形请求会被拦截。
- 打开WSL终端,执行
修复Matplotlib后端配置
- 先查看当前使用的后端:
如果输出为python3 -c "import matplotlib; print(matplotlib.get_backend())"Agg(非交互式后端),说明配置出现异常。 - 若要手动指定后端,必须确保设置语句在导入pyplot之前:
import matplotlib matplotlib.use('Qt5Agg') # 注意大小写,Qt5Agg为正确写法 from matplotlib import pyplot as plt plt.plot([1,2,3], [4,2,4]) plt.show() - 安装对应后端的依赖包:
sudo apt install python3-pyqt5 # 适配Qt5Agg后端 # 若选择TkAgg后端,执行:sudo apt install python3-tk - 永久配置后端:在WSL中创建Matplotlib配置文件,执行以下命令:
配置完成后无需每次在代码中手动设置后端。mkdir -p ~/.config/matplotlib echo "backend: Qt5Agg" >> ~/.config/matplotlib/matplotlibrc
- 先查看当前使用的后端:
检查VS Code终端的环境变量传递
打开VS Code设置,搜索terminal.integrated.env.linux,添加"DISPLAY": ":0"(需与终端echo $DISPLAY的输出一致),重启VS Code终端后验证变量是否生效。重置XLaunch配置
关闭当前XLaunch进程,重新启动时选择One large window,显示号设为0,勾选Disable access control后完成配置,再运行代码测试。
内容的提问来源于stack exchange,提问作者meysam imani
相关产品推荐
相关产品推荐

