如何用pylab远程保存graphics?
我试图用命令pylab.savefig
在远程计算机上生成一个graphics。 但是我得到这样的错误:
Unable to access the X Display, is $DISPLAY set properly?
我怎样才能妥善保存这个数字?
默认情况下,matplotlib将使用类似TkAgg
后端的东西。 这需要一个X服务器运行。
虽然你可以使用X-forwarding,但是当matplotlib尝试连接远程X-server时会有明显的延迟。 如果您不需要与情节进行交互,通过完全避免X连接加快速度往往更好。
如果您想要绘制一个完全不需要X服务器的绘图,请改为使用Agg
backend 。
例如做这样的事情:
import matplotlib matplotlib.use('Agg') # Must be before importing matplotlib.pyplot or pylab! import matplotlib.pyplot as plt fig = plt.figure() plt.plot(range(10)) fig.savefig('temp.png')
如果你希望这是默认的行为,你可以修改你的matplotlibrc文件来默认使用Agg
后端。
有关更多信息,请参阅此文章 。
呃,正确设置DISPLAYvariables?
通过使用X11的networking上的graphics通过具有DISPLAY环境variables的客户端(远程)计算机工作,该环境variables说明在哪里绘制graphics。 通常它会像mydesktop.example.com:0.0 – 然后当X11程序试图绘制的东西,它通过networkingwhizzed mydesktop.example.com,这是你坐在前面的机器(X服务器),并popup。
现在,如果你前面的机器是Windows,那么你需要从某个地方获得一台X服务器 – cygwin / X11或者商用eXceed将会很好地工作。
您还需要确保安全性得到处理 – 您不能让任何人通过networking写入您的屏幕。
你如何连接到远程机器? 因为如果你从一个Linux机器到另一个用ssh的Linux机器,那么简单的解决scheme可能是“使用ssh -X foo.example.com”来连接 – 这通过本地套接字来pipe理X11连接。
所以,如果ssh -X不是答案,我们可以在操作系统上有更多的信息吗?