如何在 Python 中设置 matplotlib 中的“后端”?

我是 matplotlib 的新用户,我的平台是 Ubuntu 10.04 Python 2.6.5

这是我的原则

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
plt.plot([1,2,3])

错误是:

/usr/local/lib/python2.6/dist-packages/matplotlib/backends/__init__.py:41: UserWarning:
Your currently selected backend, 'agg' does not support show().
Please select a GUI backend in your matplotlibrc file ('/usr/local/lib/python2.6/dist-packages/matplotlib/mpl-data/matplotlibrc')
or with matplotlib.use()
(backend, matplotlib.matplotlib_fname()))
  • 我安装了反颗粒几何库 apt-get install libagg,但它是不工作。
  • 我尝试使用后端的其他参数,如‘ GTK’和‘ TkAgg’。
  • 我安装了 python-gtk2-dev软件包,但错误仍在下面。
  • Can anyone tell me an executable backend argument and its dependency library?

这里有一个错误:

>>> matplotlib.use('GTK')
>>> import matplotlib.pyplot as plt
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.6/dist-packages/matplotlib/pyplot.py", line 95, in <module>
new_figure_manager, draw_if_interactive, show = pylab_setup()
File "/usr/local/lib/python2.6/dist-packages/matplotlib/backends/__init__.py", line 25, in pylab_setup
globals(),locals(),[backend_name])
File "/usr/local/lib/python2.6/dist-packages/matplotlib/backends/backend_gtk.py", line 28, in <module>
from matplotlib.backends.backend_gdk import RendererGDK, FigureCanvasGDK
File "/usr/local/lib/python2.6/dist-packages/matplotlib/backends/backend_gdk.py", line 29, in <module>
from matplotlib.backends._backend_gdk import pixbuf_get_pixels_array
ImportError: No module named _backend_gdk
239928 次浏览

你发布的错误与此无关。第一个问题是由于您选择了一个不适合交互使用的后端,即 agg。在不需要用户交互的脚本中,您仍然可以使用(并且应该使用)这些工具来生成图形。

如果你想要一个交互式的实验室环境,比如在 Matlab/Pylab 中,你显然需要导入一个支持 GUi 使用的后端,比如 Qt4Agg (需要 Qt 和 AGG) ,GTKAgg (GTK 和 AGG)或者 WXAgg (wxWidgets 和 AGG)。

首先我想尝试使用 WXAgg,除此之外,它实际上取决于您如何安装 Python 和 matplotlib (源代码、包等)

当前选择的后端“ agg”不支持 show ()。

AGG后端用于写入文件,而不是在窗口中呈现。请参见 matplotlib 网站上的 后端常见问题解答

Import Error: 没有名为 _ backend _ gdk 的模块

For the second error, maybe your matplotlib distribution is not compiled with GTK support, or you miss the PyGTK package. Try to install it.

在可以访问图形环境的终端或应用程序中调用 show()方法吗?

按以下顺序尝试其他 GUI 后端:

  • TkAgg
  • wxAgg
  • Qt5Agg
  • Qt4Agg

在我自己的 VIRTUAL _ ENV 中编译 python、 numpy、 scypy、 matplotlib 时遇到了这个问题

在安装 matplotlib 之前,你必须构建并安装: Pygoobject 皮开罗 Pygtk

然后用 matplotlib 做: 在构建 matplotlib 之前,如果启用了‘ gtkagg’后端,请检查‘ python./setup.py build —— help’,然后构建并安装

导出 PKG _ CONFIG _ PATH = $VIRTUAL _ ENV/lib/pkgconfig 之前

仅供参考,我发现我需要将 matplotlib.use('Agg')放在 Python 导入顺序的第一位。对于我正在做的事情(单元测试需要是无头的) ,这意味着

import matplotlib
matplotlib.use('Agg')

在我的主测试脚本的顶部。我不必触摸任何其他文件。

This can also be set in the configuration file matplotlibrc (as explained in the error message), for instance:

# The default backend; one of GTK GTKAgg GTKCairo GTK3Agg GTK3Cairo
# CocoaAgg MacOSX Qt4Agg Qt5Agg TkAgg WX WXAgg Agg Cairo GDK PS PDF SVG
backend : Agg

这样,如果与其他人共享代码,后端就不需要硬编码。 For more information, check the 文件.

在启动 python 之前,可以在 bash 中执行

export MPLBACKEND=TkAgg

您也可以尝试在浏览器中查看图表。

使用以下方法:

matplotlib.use('WebAgg')

对于新来的人,

matplotlib.pyplot.switch_backend(newbackend)