我試圖做我的數據分析和報告較少眼刺和更多圖形自動生成的圖形文件,並做到這一點我一直在玩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。你描述
這是非常奇怪的,確實如此。你能發佈最低(非)工作示例嗎?該'Agg'後端不應該需要X. – 2011-03-31 17:11:55
以最小的例子更新,但現在我不能打破它! – Bolster 2011-03-31 17:33:00