2011-02-08 49 views
61

我matplotlib的新用户,我的平台是Ubuntu的10.04的Python 2.6.5如何在Python中设置matplotlib中的'后端'?

这是我的代码

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())) 
  • 我安装的防-Grain几何库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 

回答

61

Your currently selected backend, 'agg' does not support show().

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

ImportError: No module named _backend_gdk

对于第二个错误,也许你matplotlib分布不与GTK支持编译,或者你错过了PyGTK的包。尝试安装它。

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

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

  • TkAgg
  • WX
  • QTAgg
  • QT4Agg
+0

选择GTKAgg非常感谢你 错误的员工我所做的是建立matplotlib之前获得的PyGTK – user504909 2011-02-09 03:40:26

+1

作为边评论,我会尝试QTAgg最后为目标QT3,很可能会被弃用在中期。 – tacaswell 2013-05-02 19:34:53

6

您发布的错误是不相关的。第一个是因为你选择了一个不适合交互使用的后端,即agg。您仍然可以在不需要用户交互的脚本中使用(并应该使用)这些脚本来生成剧情。 (如Qt和AGG),GTKAgg(GTK AGG)或WXAgg(wxWidgets)等后端支持gui的使用,如果你想要一个交互式实验室环境,如在Matlab/Pylab中,和Agg)。

我试图使用WXAgg,启动除了这真的取决于你如何安装Python和matplotlib(源,包等)

+0

非常感谢你我到底 – user504909 2011-02-09 03:54:24

1

我打这个尝试编译蟒蛇,numpy的,SciPy的时,matplotlib在我自己的VIRTUAL_ENV

之前安装matplotlib你必须建立和安装: pygobject pycairo pygtk的

然后用matplotlib做到这一点: 建设matplotlib与 '蟒蛇./setup.py建立--help' 如果检查前'gtkagg'后端已启用。然后建立安装

出口PKG_CONFIG_PATH = $ VIRTUAL_ENV/lib中/ pkgconfig之前

12

仅供参考,我发现我需要把matplotlib.use('Agg')首先在Python进口秩序。对于我正在做的(单元测试需要无头),这意味着将

import matplotlib 
matplotlib.use('Agg') 

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

13

这也可以在配置文件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 

这样,后端不需要如果代码是与共享要被硬编码其他人。 欲了解更多信息,请查阅documentation

相关问题