matplotlib 如何用pylab远程保存图形?[duplicate]

mwkjh3gx  于 2023-02-09  发布在  其他
关注(0)|答案(2)|浏览(138)
    • 此问题在此处已有答案**:

(13个答案)
六年前关闭了。
我尝试用pylab.savefig命令在远程计算机上生成图形,但出现以下错误:

Unable to access the X Display, is $DISPLAY set properly?

如何正确保存数字?

fkaflof6

fkaflof61#

默认情况下,matplotlib将使用类似TkAgg的后端,这需要运行X服务器。
虽然你可以只使用X-转发,但当matplotlib尝试连接远程X-服务器时,会有一个明显的延迟。如果你不需要与绘图交互,那么通过完全避免X-连接来加快速度通常会更好。
如果您想在根本不需要X服务器的情况下绘图,请改用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后端。
请参阅本文了解更多信息。

xfb7svmp

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不是答案,我们可以有一些更多的信息,有关的操作系统,请?

相关问题