You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

SSH远程连接树莓派时Matplotlib绘图无法显示的问题

解决SSH远程树莓派Matplotlib绘图无法显示的问题

先给你拆解下你遇到的两种情况:

  • 代码1用了matplotlib.use('Agg'):这是Matplotlib的无显示后端,它只负责处理绘图逻辑,不会弹出任何图形窗口,所以代码能正常跑完,但看不到绘图结果,只会输出startfinished
  • 代码2用了TkAgg:这是依赖Tkinter的图形渲染后端,但SSH默认没有开启X11图形转发,树莓派找不到可用的图形环境,所以触发了Traceback错误。

下面给你两种可行的解决方案,按需选择:

方案1:开启SSH X11转发(让图形窗口显示在本地电脑)

这个方法是把树莓派的图形界面转发到你本地电脑上,需要你的本地设备支持X11(Windows需安装Xming,Mac自带XQuartz,Linux系统直接支持)。

操作步骤:

  1. 本地电脑准备X11工具:Windows安装Xming并启动,Mac打开XQuartz,Linux无需额外安装。
  2. 用带X11转发参数的命令连接树莓派:
ssh -X pi@你的树莓派IP地址

如果用Windows的Putty连接,要在Connection->SSH->X11选项里勾选"Enable X11 forwarding"。
3. 连接成功后,直接运行你的代码2(或者去掉matplotlib.use('TkAgg'),让Matplotlib自动适配图形后端),绘图窗口就会在你的本地电脑上弹出了。

方案2:将绘图保存为图片文件(无需图形界面)

如果不需要实时显示窗口,只需要生成绘图文件,那可以基于代码1的逻辑,加上保存图片的代码替换plt.show()

修改后的代码:

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

print('start')
plt.plot([1,2,3,4],[1,4,9,16])
plt.savefig('plot_result.png')  # 将绘图保存为PNG图片
print('finished')

运行后,树莓派的当前目录会生成plot_result.png,你可以用scp命令把文件传到本地查看:

scp pi@你的树莓派IP地址:/home/pi/plot_result.png ./本地保存路径

小提示

如果你经常用Matplotlib绘图,可以在树莓派的~/.config/matplotlib/matplotlibrc文件里设置默认后端,避免每次代码里手动指定:

backend: TkAgg

内容的提问来源于stack exchange,提问作者springsr

火山引擎 最新活动