【问题标题】:matlibplot not showing up ssh into rasp pimatlibplot 没有在树莓派中显示 ssh
【发布时间】:2018-08-30 17:37:24
【问题描述】:

我正在尝试使用 python 生成一个绘图,同时 ssh 进入一个 rasp pi。我尝试了一些不同的方法,但无法显示情节或出现 Traceback 错误。

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
print ('start')
plt.plot([1,2,3,4],[1,4,9,16])
plt.show()
print ('finished')

开始

完成

import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
print ('start')
plt.plot([1,2,3,4],[1,4,9,16])
plt.show()
print ('finished')

开始

Traceback(最近一次调用最后一次):

文件“run_ssa_test1.py”,第 20 行,在 plt.plot([1,2,3,4],[1,4,9,16])

文件“/usr/local/lib/python3.4/dist-packages/matplotlib/pyplot.py”,第 3306 行,在图中 ax = gca()

文件“/usr/local/lib/python3.4/dist-packages/matplotlib/pyplot.py”,第 950 行,在 gca 中 返回 gcf().gca(**kwargs)

文件“/usr/local/lib/python3.4/dist-packages/matplotlib/pyplot.py”,第 586 行,在 gcf 返回图()

文件“/usr/local/lib/python3.4/dist-packages/matplotlib/pyplot.py”,第535行,如图 **kwargs)

文件“/usr/local/lib/python3.4/dist-packages/matplotlib/backends/backend_tkagg.py”,第 81 行,在 new_figure_manager return new_figure_manager_given_figure(num, figure)

文件“/usr/local/lib/python3.4/dist-packages/matplotlib/backends/backend_tkagg.py”,第 89 行,在 new_figure_manager_given_figure 窗口 = Tk.Tk()

文件“/usr/lib/python3.4/tkinter/init.py”,第 1854 行,在 init 中 self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use) _tkinter.TclError: 没有显示名称,也没有 $DISPLAY 环境变量

【问题讨论】:

    标签: python matplotlib ssh


    【解决方案1】:

    显示图像、matplotlib 或任何其他工具,需要一个显示器来显示它。默认情况下,SSH 登录仅授予控制台访问权限。

    我看到的两个最明显的选项是:

    1. 在树莓派上生成图像,将它们写入文件,然后将它们检索到本地计算机以显示。
       host$ ssh rpi_hostname
       rpi$ python make_images.py
       # where `make_images.py` contains something like
    
       import matplotlib.pyplot as plt
       plt.plot([1,2,3,4],[1,4,9,16])
       plt.savefig("myfig.png", bbox_inches='tight', ...)
    
       rpi$ logout
       host$ scp rpi_hostname:myfig.png .
       host$ display myfig.png
    

    这个例子使用了display,一个来自 imagemagick 的工具。但显然将显示更改为 eoggthumb 或您安装的任何内容。


    1. 打开 X-forwarding 登录树莓派:
    host$ ssh -X hostname
    

    现在 rpi 上生成的图像可以在您的主机上显示的显示器上呈现,即pyplot.show() 可以工作。

    选项 (2) 可能相当慢,而且它还取决于在 rpi 上安装更多的后端库。


    第三种选择是完全避免在 rpi 上生成绘图,而是将数据检索到您的主机 PC 并在那里绘图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-02
      • 2017-11-12
      • 2019-02-11
      • 2013-07-21
      • 2017-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多