2012-10-11 31 views
2

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

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 

在我的代码在其失败的线是无花果= matplotlib.pyplot.figure(figsize =(11.5,14.8))

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

+1

尝试从http建议: //stackoverflow.com/questions/5503601/python-headless-matplotlib-pyplot –

回答

2

您的代码可能不会显示这些图,但它仍然使用需要显示的交互式后端。

你既可以ssh -Y [email protected]并获得X连接,或者,按照建议由ngurenyaga提供的链接,编辑您的代码中使用非交互式后端:

matplotlib.use("Agg")