【问题标题】:Save matplotlib plot when running Python2 application on Linux server with no display在没有显示的 Linux 服务器上运行 Python2 应用程序时保存 matplotlib 绘图
【发布时间】:2017-01-20 00:58:57
【问题描述】:

当我正在处理的服务器上没有显示时,是否可以使用 matplotlib plot 或类似的绘图工具将 python2 应用程序中的绘图保存到文件中?

上下文: 我正在运行新 Debian 的服务器集群上运行 Python 中的一系列大型优化。我真的很希望能够将这些优化保存为绘图(例如“opt-100.png”之类的文件)以及原始数据。我无法这样做,因为 pylab 和 matplotlib.pyplot 都无法导入,因为没有显示(即当我尝试导入它们时,python 会抛出“RuntimeError: could not open display”)。

我意识到我能够保存原始数据,然后将其 scp 到我的本地机器上,但是由于我的代码的当前配置,这将是很多工作!!

【问题讨论】:

    标签: python linux matplotlib


    【解决方案1】:

    必须将 Matplotlib 的后端设置为使用软件渲染而不是硬件渲染。在任何 matplotlib 或 pylab 导入之前试试这个:

    import matplotlib
    matplotlib.use('Agg')
    

    【讨论】:

    • 谢谢布赖恩,允许我导入!将更新我的代码,让你知道我的进展!
    • 几个月前我在 RHEL 上遇到了同样的问题。此更改使 PuTTy 登录无需 X11 端口转发到 XServer 即可制作 Matplotlib 图形。如果您需要通过 SSH 进行交互式图形,请启用 X11 端口转发并安装 XServer,或者(我的偏好)尝试 MobaXTerm。
    • 酷,有道理!不幸的是,我在服务器上的权限相当小,所以我认为我自己无法启用端口转发。
    • 它只需要在客户端启用,服务器本身已经为它设置好了。对我来说安装 Moba 比弄乱 X11 更容易;它默认启用。
    • 不幸的是它不起作用:/在其中一台服务器上,错误如下:“Xlib: extension "RANDR" missing on display "localhost:10.0"."另一方面(更重要的是)它有一个相当大的错误:“/usr/lib64/python2.7/site-packages/matplotlib/__init__.py:1005: UserWarning: This call to matplotlib.use() has no因为已经选择了后端,所以 matplotlib.use() 必须在 pylab、matplotlib.pyplot 或 matplotlib.backends 首次导入之前调用。"其次是“RuntimeError:无法打开显示”
    猜你喜欢
    • 2011-10-24
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 2017-03-07
    相关资源
    最近更新 更多