为了账号安全,请及时绑定邮箱和手机立即绑定

在不运行X服务器的情况下生成matplotlib图

在不运行X服务器的情况下生成matplotlib图

繁华开满天机 2019-11-05 15:02:48
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使用给定的渲染器。


查看完整回答
反对 回复 2019-11-05
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

对于它的价值,您实际上并没有两次导入matplotlib。您要导入matplotlib,然后再导入未自动导入的子模块。是的,还有其他方法(例如,更改.maplotlibrc文件),这是最简单的方法。

查看完整回答
反对 回复 2019-11-05
  • 3 回答
  • 0 关注
  • 495 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信