如何用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不是答案,我们可以在操作系统上有更多的信息吗?