2011-02-08 18 views
61

Soy nuevo usuario de matplotlib, mi plataforma es Ubuntu 10.04 Python 2.6.5¿Cómo puedo configurar el 'back-end' en matplotlib en Python?

Este es mi código

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

El error es:

/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())) 
  • he instalado el anti -Grain Geometry library apt-get install libagg pero no funciona.
  • Intenté usar otro argumento de backend como 'GTK' y 'TkAgg'.
  • Instalé el paquete python-gtk2-dev, pero el error sigue apareciendo.
  • ¿Alguien puede decirme un argumento de back-end ejecutable y su biblioteca de dependencia?

Aquí está el error:

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

Respuesta

61

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

AGG backend es para escribir en el archivo, no se para renderizar en una ventana. Vea el backend FAQ en el sitio web matplotlib.

ImportError: No module named _backend_gdk

Para el segundo error, tal vez su distribución matplotlib no está compilado con soporte GTK, o se le pasa el paquete de PyGTK. Intenta instalarlo

¿Llama al método show() dentro de un terminal o aplicación que tiene acceso a un entorno gráfico?

probar otros backends interfaz gráfica de usuario, en este orden:

  • TkAgg
  • WX
  • QTAgg
  • QT4Agg
+0

muchas gracias el personal mal que hice es la configuración matplotlib antes de llegar PyGTK – user504909

+1

como un comentario al margen, me gustaría tratar QTAgg pasado como que se dirige a QT3 y probablemente será obsoleto en el mediano plazo. – tacaswell

6

Los errores que posteaste no están relacionados. El primero se debe a que usted selecciona un backend que no es para uso interactivo, es decir, agg. Todavía puede usar (y debería usar) aquellos para la generación de parcelas en scripts que no requieren la interacción del usuario.

Si desea un entorno de laboratorio interactivo, como en Matlab/Pylab, obviamente importaría un backend que admita el uso de la interfaz gráfica de usuario, como Qt4Agg (necesita Qt y AGG), GTKAgg (GTK un AGG) o WXAgg (wxWidgets y Agg).

me gustaría empezar por tratar de utilizar WXAgg, aparte de eso, realmente depende de cómo haya instalado Python y matplotlib (fuente, el paquete etc.)

+0

muchas gracias selecciono GTKAgg en el extremo – user504909

1

llegué a este cuando se trata de recopilar pitón, numpy, scipy , matplotlib en mi propio VIRTUAL_ENV

Antes de instalar matplotlib usted tiene que construir e instalar: PyGObject PyCairo pygtk

Y luego lo hacen con matplotlib: Antes de construir matplotlib comprobar con 'pitón ./setup.py construir --help' si El backend 'gtkagg' está habilitado. A continuación, construir e instalar

Antes PKG_CONFIG_PATH exportación = $ VIRTUAL_ENV/lib/pkgconfig

12

FYI, me encontré con que tenía que poner matplotlib.use('Agg') primero en orden de importación de Python. Por lo que estaba haciendo (unidad de pruebas tenía que ser sin cabeza) que significaba poner

import matplotlib 
matplotlib.use('Agg') 

en la parte superior de mi escritura de la prueba principal. No tuve que tocar ningún otro archivo.

+0

Debo hacer lo mismo que me preocupa mucho. ¿Alguna vez has encontrado otra solución elegante? –

13

Esto también se puede configurar en el fichero de configuración matplotlibrc (como se explica en el mensaje de error), por ejemplo:

# 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 

De esta manera, el servidor no tiene que ser hardcoded si el código es compartido con otra gente. Para obtener más información, consulte documentation.

Cuestiones relacionadas