(13个答案)六年前关闭了。我尝试用pylab.savefig命令在远程计算机上生成图形,但出现以下错误:
pylab.savefig
Unable to access the X Display, is $DISPLAY set properly?
如何正确保存数字?
fkaflof61#
默认情况下,matplotlib将使用类似TkAgg的后端,这需要运行X服务器。虽然你可以只使用X-转发,但当matplotlib尝试连接远程X-服务器时,会有一个明显的延迟。如果你不需要与绘图交互,那么通过完全避免X-连接来加快速度通常会更好。如果您想在根本不需要X服务器的情况下绘图,请改用Agg后端。例如,这样做:
TkAgg
Agg
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 file,使其默认使用Agg后端。请参阅本文了解更多信息。
xfb7svmp2#
尝试将DISPLAY变量设置为适当的值。使用X11在网络上绘制图形时,客户端(远程)计算机使用DISPLAY环境变量来指定在哪里绘制图形。通常它是类似于mydesktop.example.com:0.0的内容-然后当X11程序试图绘制某个东西时,它会通过网络快速传输到mydesktop.example.com,这是您坐在前面的计算机(X服务器),然后弹出。现在,如果您面前的机器是Windows,那么您需要从某个地方获得X服务器- cygwin/X11或商业eXceed将做得很好。您还需要确保安全性得到处理-您不能让任何人通过网络向您的屏幕写入内容。您如何连接到远程计算机?因为如果您使用ssh从一个Linux机器连接到另一个Linux机器,那么简单的解决方案可能是'Use ssh -Xfoo.example.com'来连接-这将通过本地套接字传输X11连接。所以,如果ssh -X不是答案,我们可以有一些更多的信息,有关的操作系统,请?
2条答案
按热度按时间fkaflof61#
默认情况下,matplotlib将使用类似
TkAgg
的后端,这需要运行X服务器。虽然你可以只使用X-转发,但当matplotlib尝试连接远程X-服务器时,会有一个明显的延迟。如果你不需要与绘图交互,那么通过完全避免X-连接来加快速度通常会更好。
如果您想在根本不需要X服务器的情况下绘图,请改用
Agg
后端。例如,这样做:
如果希望这是默认行为,可以修改matplotlibrc file,使其默认使用
Agg
后端。请参阅本文了解更多信息。
xfb7svmp2#
尝试将DISPLAY变量设置为适当的值。
使用X11在网络上绘制图形时,客户端(远程)计算机使用DISPLAY环境变量来指定在哪里绘制图形。通常它是类似于mydesktop.example.com:0.0的内容-然后当X11程序试图绘制某个东西时,它会通过网络快速传输到mydesktop.example.com,这是您坐在前面的计算机(X服务器),然后弹出。
现在,如果您面前的机器是Windows,那么您需要从某个地方获得X服务器- cygwin/X11或商业eXceed将做得很好。
您还需要确保安全性得到处理-您不能让任何人通过网络向您的屏幕写入内容。
您如何连接到远程计算机?因为如果您使用ssh从一个Linux机器连接到另一个Linux机器,那么简单的解决方案可能是'Use ssh -Xfoo.example.com'来连接-这将通过本地套接字传输X11连接。
所以,如果ssh -X不是答案,我们可以有一些更多的信息,有关的操作系统,请?