2011-03-31 107 views
22

我試圖做我的數據分析和報告較少眼刺和更多圖形自動生成的圖形文件,並做到這一點我一直在玩matplotlib/pyplot/pylab。出色的作品,但是當我嘗試無頭服務器上運行它...Python無頭MatplotLib/Pyplot

tkinter.TclError: no display name and no $DISPLAY environment variable 

對於這個應用程序,我只用PyLab,但有點谷歌之後,我加入了下面的pylab導入前:

import matplotlib 
matplotlib.use("Agg") 

裏面應該有改變後端,但沒有效果。

任何想法我做錯了什麼?

遠程機器確實有X-轉發能力,但由於該應用程序不應該需要顯示任何內容,我相信一般的SSH -X黑客是矯枉過正。

例子:惡魔似追魂

同一臺機器上工作代碼

import matplotlib 
matplotlib.use("Agg") 
import numpy as np 
import pylab as pl 


xvals=np.arange(100) 
yvals=np.cumsum(np.random.random(100)) 
yvals[-10:]=0 
yvals=np.log(yvals) 
pl.close() 

pl.plot(xvals,yvals) 
pl.xlabel("X") 
pl.ylabel("Y") 
pl.title("Title") 

pl.savefig("testgraph.png") 

非工作真正的代碼

import matplotlib 
matplotlib.use("Agg") 
import numpy as np 
import pylab as pl 
import utility as util 
import os 

... non graph stuff... 
def graph_p(self): 
    pl.close() 
    channels=range(self.p.shape[0]) 
    for line in range(self.p.shape[1]): 
     yvals=np.ma.masked_invalid(map(util.watts_to_dbmhz,self.p[:,line])) 
     pl.plot(channels,yvals) #Error says it occurs here 
    pl.xlabel("Subchannel Index") 
    pl.ylabel("Power (dbmhz)") 
    pl.title("Plot of per-tone power assignments for %d lines"%self.p.shape[1]) 
    pl.savefig(self.dest+self.scenario+'-power.png') 

沒有別的倒是pyplot。你描述

+0

這是非常奇怪的,確實如此。你能發佈最低(非)工作示例嗎?該'Agg'後端不應該需要X. – 2011-03-31 17:11:55

+0

以最小的例子更新,但現在我不能打破它! – Bolster 2011-03-31 17:33:00

回答

7

變成一個實用程序文件(不是我的! )正在拉pylab的東西。將matplotlib後端選擇轉移到初始頁面。

+6

這似乎是個竅門。在任何可能導入pylab的東西之前導入matplotlib **。 – Cerin 2012-05-16 15:09:39

14

一切聽起來是正確的。當您運行此會發生什麼:

import matplotlib 
matplotlib.use('Agg') 
import pylab 
pylab.plot([1,2], [3,4], linestyle='-') 
pylab.savefig('foo.png') 

在我的環境是產生這個(我換算下來):

enter image description here

+0

見構建工作上面的例子......(爲什麼它的工作,我不知道) – Bolster 2011-03-31 17:32:41

+0

酷很高興現在的工作對你。 :-) – samplebias 2011-03-31 17:34:43

+0

+1感謝這個簡單的例子。 – Geoff 2011-05-03 18:57:11

7

嘗試導入matplotlib和設置Agg後端之前導入numpy的:

import matplotlib 
matplotlib.use("Agg") 
+0

行爲沒有變化。即使mpl是第一件進口和'使用' – Bolster 2011-03-31 17:44:29