matlibplot没有显示ssh到rasp pi

时间:2018-03-21 14:31:53

标签: python matplotlib ssh

我正在尝试使用python生成一个绘图,而ssh生成一个锉刀。我尝试了一些不同的东西,但是我无法显示情节,或者我收到了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')
  

启动

     

追踪(最近一次呼叫最后一次):

     

文件“run_ssa_test1.py”,第20行,in       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中       return gcf()。gca(** kwargs)

     

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

     

文件“/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行,in new_figure_manager_given_figure       window = 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环境变量

1 个答案:

答案 0 :(得分:1)

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

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

  1. 在树莓派上生成图像,将它们写入文件,然后将它们检索到本地计算机上进行显示。
  2.    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
    

    此示例使用来自imagemagick的display工具。但显然将显示更改为eoggthumb或已安装的任何内容。

    1. 使用X-forwarding登录到raspberry pi:
    2. host$ ssh -X hostname
      

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

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

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