猿问

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

Matplotlib似乎需要$ DISPLAY环境变量,这意味着X服务器正在运行。

某些Web托管服务不允许运行X服务器会话。

有没有一种方法可以在不运行X服务器的情况下使用matplotlib生成图形?


[username@hostname ~]$ python2.6

Python 2.6.5 (r265:79063, Nov 23 2010, 02:02:03)

[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2

Type "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

>>>


繁华开满天机
浏览 512回答 3
3回答

LEATH

您也可以在导入之前简单地调用matplotlib.use('Agg') matplotlib.pyplot,然后照常继续。例如import matplotlib as mplmpl.use('Agg')import matplotlib.pyplot as pltfig = 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

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

相关分类

Python
我要回答