【发布时间】:2011-07-27 02:12:53
【问题描述】:
我正在尝试使用自动生成的图形文件来减少我的数据分析和报告眼睛刺伤和更多图形,为此我一直在使用 matplotlib/pyplot/pylab。效果很好,但是当我尝试在无头服务器上运行它时......
tkinter.TclError: no display name and no $DISPLAY environment variable
对于这个应用程序,我只使用 PyLab,但经过一点 google,我在 pylab 导入之前添加了以下内容:
import matplotlib
matplotlib.use("Agg")
这应该改变了后端,但没有效果。
任何想法我做错了什么?
远程机器确实具有 X 转发功能,但由于此应用程序不需要显示任何内容,我相信通常的 ssh -X hack 是矫枉过正的。
示例:恶魔般的欺骗
示例工作同一台机器上的代码
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。 -
更新了最小的例子,但现在我不能打破它!
标签: python matplotlib