2012-10-11 55 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")