WSL环境下Python3调用Matplotlib绘图无法显示的解决求助
在WSL中显示Matplotlib绘图的解决方案
首先解释你看到的<matplotlib.lines.Line2D object at ...>:这是plt.plot()方法的正常返回值,它代表你创建的折线图形对象,不是错误,无需在意。
下面是两种解决WSL中绘图不显示的方法:
方法一:保存图像到文件(无需图形界面转发)
如果不需要实时弹出窗口查看绘图,直接将图像保存为文件后在Windows中查看:
- 修改你的代码,在导入matplotlib后添加后端设置,并新增保存图像的代码:
import matplotlib matplotlib.use('Agg') # 使用非交互式后端 import matplotlib.pyplot as plt x = [1,2,3,4,5] y = [x**2 for x in x] plt.plot(x,y) plt.savefig('my_plot.png') # 将图像保存为文件 # plt.show() # 用Agg后端时plt.show()无效,可以注释掉
- 运行脚本后,在WSL终端执行以下命令,将图片复制到Windows桌面(替换成你的Windows用户名):
cp my_plot.png /mnt/c/Users/你的用户名/Desktop/
之后直接在Windows桌面打开图片即可。
方法二:配置图形界面转发(实时显示窗口)
如果需要实时弹出绘图窗口,需要配置WSL的X11图形转发:
- 在Windows上安装VcXsrv X Server,启动时选择「Multiple windows」,「Start no client」,并勾选「Disable access control」后启动。
- 配置WSL的DISPLAY环境变量:
- 临时生效:在WSL终端执行:
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0 - 永久生效:将上述命令添加到
~/.bashrc或~/.zshrc文件末尾,然后执行source ~/.bashrc使设置立即生效。
- 临时生效:在WSL终端执行:
- 安装Matplotlib交互式后端的依赖:
在WSL终端执行:sudo apt-get update && sudo apt-get install python3-tk - 修改代码,确保使用交互式后端(可选,若默认后端不是TkAgg则添加):
import matplotlib matplotlib.use('TkAgg') # 指定交互式后端 import matplotlib.pyplot as plt x = [1,2,3,4,5] y = [x**2 for x in x] plt.plot(x,y) plt.show()
运行脚本后,绘图窗口会在Windows桌面上弹出。
内容的提问来源于stack exchange,提问作者Max_CA
相关产品推荐
相关产品推荐

