如何在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())) 
  • 我安装了Anti-Grain Geometry库apt-get install libagg但是它不起作用。
  • 我试图使用其他像“GTK”和“TkAgg”的后端参数。
  • 我安装了python-gtk2-dev软件包,但是仍然在下面的错误。
  • 任何人都可以告诉我一个可执行的后端参数及其依赖库吗?

这是错误:

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

您当前select的后端“agg”不支持show()。

AGG后端用于写入文件,而不是在窗口中进行渲染。 请参阅matplotlib网站上的后端FAQ 。

ImportError:没有名为_backend_gdk的模块

对于第二个错误,也许你的matplotlib发行版没有用GTK支持编译,或者你错过了PyGTK包。 尝试安装它。

你是否可以在可以访问graphics环境的terminal或应用程序中调用show()方法?

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

  • TkAgg
  • WX
  • QTAgg
  • QT4Agg

这也可以在configuration文件matplotlibrc (如错误消息中所述),例如:

 # 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 

这样,如果代码与其他人共享,则后端不需要进行硬编码。 有关更多信息,请查看文档 。

仅供参考,我发现我需要首先在Python导入顺序中放置matplotlib.use('Agg') 。 对于我正在做的(unit testing需要是无头的),这意味着放

 import matplotlib matplotlib.use('Agg') 

在我的主testing脚本的顶部。 我不必碰任何其他文件。

你发布的错误是无关的。 第一个是由于你select了一个不适合交互使用的后端,即agg。 您仍然可以使用(并应该使用)那些不需要用户交互的脚本来生成剧情。

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

我开始尝试使用WXAgg,除此之外,这取决于你如何安装Python和matplotlib(源,包等)

我试图在我自己的VIRTUAL_ENV中编译python,numpy,scipy,matplotlib

在安装matplotlib之前,你必须build立和安装:pygobject pycairo pygtk

然后用matplotlib来做:在构buildmatplotlib之前,检查'python ./setup.py build –help'是否'gtkagg'后端被启用。 然后build立和安装

在导出之前PKG_CONFIG_PATH = $ VIRTUAL_ENV / lib / pkgconfig