仅从控制台运行时,Matplotlib pdf保存失败

时间:2012-10-11 10:12:19

标签: python ssh console matplotlib

我正在使用matplotlib.backends.backend_pdf将一些matplotlib图表渲染为PDF。当我从我的(Linux)计算机运行它时,它工作正常,但如果我从外部位置ssh到计算机并运行代码,它将失败,并显示以下错误消息。

  File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 343, in figure
    **kwargs)
  File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 80, in new_figure_manager
    window = Tk.Tk()
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1688, in __init__
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: no display name and no $DISPLAY environment variable

我的代码中失败的行是 fig = matplotlib.pyplot.figure(figsize =(11.5,14.8))

我认为这与它试图找到渲染图的显示有关,但我的代码实际上从未显示过它们。它只保存为PDF。有什么办法可以解决这个问题,让代码正常运行吗?

1 个答案:

答案 0 :(得分:2)

您的代码可能无法显示图表,但它仍然使用需要显示的交互式后端。

您可以ssh -Y user@host获取X-connection,或者根据ngurenyaga提供的链接中的建议,编辑您的代码以使用非交互式后端:

matplotlib.use("Agg")