Matplotlib似乎需要$DISPLAY环境变量,这意味着一个正在运行的X服务器
某些web托管服务不允许运行X服务器会话
有没有一种方法可以在不运行X服务器的情况下使用matplotlib生成图形?

[[email protected] ~]$ 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
>>>

推荐答案

@Neil的答案是一个(完全正确!)做这件事的方式,不过你也可以simply call matplotlib.use('Agg') before importing 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, cairo, and gdk backends都可以在没有X-server的情况下使用.但是,默认情况下只会构建Agg后端(我想是吧?),因此,其他后端很有可能无法在您的特定安装中启用.

或者,您可以在.matplotlibrc文件中设置backend参数,让matplotlib.pyplot自动使用给定的渲染器.

Python相关问答推荐

如何计算Pandas 数据框中单元格内的行数,这些行数不是空行

Python计算目录及其所有子目录中的文件

Python for Google Sheets:自动创建新工作表(在同一个工作簿中)并将新数据框写入其中

如何加快应用两个二维数组的 scipy 集成?

如何在 map 中插入点

使用其他爬取信息的scrapy图像管道文件名

如何停止 func 运行并在一分钟后返回一个值?

如何将postman 中的 JSON 格式数据发送到具有另一个模型的外键的 django 模型?

如何在混合数据类型的 Python Pandas 数据框列中仅比较日期或仅忽略秒数的日期时间?

如何使用 Python reduce 或列表推导将函数列表顺序应用于字符串?

NNC 的整数规划

从嵌套 for 循环到字典理解?

将命令添加到用户输入

Pandas:使用带有字符串变量的 df.eval 作为条件过滤

Python:如何将列表中以某个字母开头的元素复制到新列表中或从列表中删除不以字母开头的元素

如何将空格替换为字符串中的随机数

过滤一行代码,只显示某些列

PyQt5: 填充 QPolygon 中的孔 // 增加 qpolygon 的大小(高度)

Pytesseract image_to_data 无法读取我图像中的数字

如何在Pandas 中按天分组?