【问题标题】:Import Matplotlib without a display不带显示导入 Matplotlib
【发布时间】:2015-11-24 20:13:25
【问题描述】:

我正在尝试在我的 linux 服务器上运行 python 脚本并制作和保存一些绘图。我已经安装了 ipython 和 pylab 和 matplotlib 但是当我运行我的脚本时,我得到了这个错误:

Traceback (most recent call last):
  File "/root/dining_hall_graph.py", line 14, in <module>
    from pylab import * 
  File "/usr/lib64/python2.7/site-packages/pylab.py", line 1, in <module>
    from matplotlib.pylab import *
  File "/usr/lib64/python2.7/site-packages/matplotlib/pylab.py", line 265, in <module>
    from matplotlib.pyplot import *
  File "/usr/lib64/python2.7/site-packages/matplotlib/pyplot.py", line 97, in <module>
    _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
  File "/usr/lib64/python2.7/site-packages/matplotlib/backends/__init__.py", line 25, in pylab_setup
    globals(),locals(),[backend_name])
  File "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_gtkagg.py", line 10, in <module>
    from matplotlib.backends.backend_gtk import gtk, FigureManagerGTK, FigureCanvasGTK,\
  File "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_gtk.py", line 13, in <module>
    import gtk; gdk = gtk.gdk
  File "/usr/lib64/python2.7/site-packages/gtk-2.0/gtk/__init__.py", line 64, in <module>
    _init()
  File "/usr/lib64/python2.7/site-packages/gtk-2.0/gtk/__init__.py", line 52, in _init
    _gtk.init_check()
RuntimeError: could not open display

在这条线上from pylab import *

如何在我的 linux 服务器上运行的 python 脚本中绘制和保存图形?

谢谢

【问题讨论】:

标签: python linux matplotlib


【解决方案1】:

您几乎不应该使用from pylab import *。

从numpy、scipy 和matplotlib 导入您需要的内容。

在没有显示的机器上,你需要使用agg后端:

您可以通过指定环境变量MPLBACKEND来实现这一点

$ MPLBACKEND=Agg python plot.py

或者通过导入matplotlib之前导入matplotlib.pyplot:

import matplotlib
matplotlib.use('Agg')

import matplotlib.pyplot as plt

plt.plot([1, 2, 1])
plt.savefig('test.pdf')

要将其设为默认值,您可以创建一个名为 matplotlibrc 的文件 在当前目录或$HOME/.config/matplotlib中,内容如下:

backend: Agg

或者您可以启用 X-Forwarding,这样图表就会在您的主机上弹出:

ssh -X user@server

【讨论】:

  • 太好了,在终端里也能看到剧情吗?
  • 什么意思? ASCII艺术?
  • 我不知道。 x-forwarding 有什么问题?
猜你喜欢
  • 2020-04-19
  • 2023-03-24
  • 2016-10-25
  • 1970-01-01
  • 1970-01-01
  • 2020-02-16
  • 2017-07-27
  • 2023-03-30
  • 2019-12-21
相关资源
最近更新 更多