Matplotlib似乎需要$ DISPLAY环境变量,这意味着X服务器正在运行。某些Web托管服务不允许运行X服务器会话。有没有一种方法可以在不运行X服务器的情况下使用matplotlib生成图形?[username@hostname ~]$ python2.6Python 2.6.5 (r265:79063, Nov 23 2010, 02:02:03)[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2Type "help", "copyright", "credits" or "license" for more information.>>> import matplotlib.pyplot as plt>>> fig = plt.figure()Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/username/lib/python2.6/matplotlib-1.0.1-py2.6-linux-i686.egg/matplotlib/pyplot.py", line 270, in figure **kwargs) File "/home/username/lib/python2.6/matplotlib-1.0.1-py2.6-linux-i686.egg/matplotlib/backends/backend_tkagg.py", line 80, in new_figure_manager window = Tk.Tk() File "/usr/local/lib/python2.6/lib-tk/Tkinter.py", line 1643, in __init__ self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)_tkinter.TclError: no display name and no $DISPLAY environment variable>>>
3 回答
LEATH
TA贡献1936条经验 获得超6个赞
您也可以在导入之前简单地调用matplotlib.use('Agg') matplotlib.pyplot,然后照常继续。
例如
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(range(10))
fig.savefig('temp.png')
您也不必使用Agg后端。的PDF,PS,SVG,AGG,开罗,和GDK后端都可以没有的X服务器使用。但是,默认情况下将仅构建Agg后端(我认为吗?),因此很有可能在您的特定安装中可能未启用其他后端。
或者,您可以只在.matplotlibrc文件中设置backend参数以自动matplotlib.pyplot使用给定的渲染器。
慕码人8056858
TA贡献1803条经验 获得超6个赞
对于它的价值,您实际上并没有两次导入matplotlib。您要导入matplotlib,然后再导入未自动导入的子模块。是的,还有其他方法(例如,更改.maplotlibrc
文件),这是最简单的方法。
添加回答
举报
0/150
提交
取消