我正在尝试使用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环境变量
答案 0 :(得分:1)
要显示图像,matplotlib或任何其他工具,需要显示来显示它。默认情况下,SSH登录仅提供控制台访问权限。
我看到的两个最明显的选择是:
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
工具。但显然将显示更改为eog
,gthumb
或已安装的任何内容。
host$ ssh -X hostname
现在,rpi上生成的图像可以在主机上显示的显示器上呈现,即pyplot.show()
将起作用。
选项(2)可能相当慢,并且还取决于在rpi上安装后端的更多库。
第三种选择是完全避免在rpi上生成绘图,而是将数据检索到主机并绘制在那里。