Lista de todos los backends de matplotlib disponibles

El nombre del backend actual es accesible vía

 >>> importar matplotlib.pyplot como plt
 >>> plt.get_backend ()
 'GTKAgg'

¿Hay alguna forma de obtener una lista de todos los backends que se pueden usar en una máquina en particular?

Puedes acceder a las listas

matplotlib.rcsetup.interactive_bk matplotlib.rcsetup.non_interactive_bk matplotlib.rcsetup.all_backends 

el tercero es la concatenación de los dos primeros. Si leo el código fuente correctamente, esas listas están codificadas de manera rígida, y no te digo qué backends son realmente utilizables. También hay

 matplotlib.rcsetup.validate_backend(name) 

pero esto también solo se compara con la lista codificada.

Aquí hay una modificación del script publicado anteriormente. Encuentra todos los backends soportados, los valida y mide sus fps. En OSX se bloquea Python cuando se trata de tkAgg, así que úsalo bajo tu propio riesgo;

 from pylab import * import time import matplotlib.backends import matplotlib.pyplot as p import os.path def is_backend_module(fname): """Identifies if a filename is a matplotlib backend module""" return fname.startswith('backend_') and fname.endswith('.py') def backend_fname_formatter(fname): """Removes the extension of the given filename, then takes away the leading 'backend_'.""" return os.path.splitext(fname)[0][8:] # get the directory where the backends live backends_dir = os.path.dirname(matplotlib.backends.__file__) # filter all files in that directory to identify all files which provide a backend backend_fnames = filter(is_backend_module, os.listdir(backends_dir)) backends = [backend_fname_formatter(fname) for fname in backend_fnames] print("supported backends: \t" + str(backends)) # validate backends backends_valid = [] for b in backends: try: p.switch_backend(b) backends_valid += [b] except: continue print("valid backends: \t" + str(backends_valid)) # try backends performance for b in backends_valid: ion() try: p.switch_backend(b) clf() tstart = time.time() # for profiling x = arange(0,2*pi,0.01) # x-array line, = plot(x,sin(x)) for i in arange(1,200): line.set_ydata(sin(x+i/10.0)) # update the data draw() # redraw the canvas print(b + ' FPS: \t' , 200/(time.time()-tstart)) ioff() except: print(b + " error :(") 

Existe una lista codificada por Sven, pero para encontrar cada backend que Matplotlib puede usar (según la implementación actual para configurar un backend), se puede inspeccionar la carpeta matplotlib / backends .

El siguiente código hace esto:

 import matplotlib.backends import os.path def is_backend_module(fname): """Identifies if a filename is a matplotlib backend module""" return fname.startswith('backend_') and fname.endswith('.py') def backend_fname_formatter(fname): """Removes the extension of the given filename, then takes away the leading 'backend_'.""" return os.path.splitext(fname)[0][8:] # get the directory where the backends live backends_dir = os.path.dirname(matplotlib.backends.__file__) # filter all files in that directory to identify all files which provide a backend backend_fnames = filter(is_backend_module, os.listdir(backends_dir)) backends = [backend_fname_formatter(fname) for fname in backend_fnames] print backends 

También puede ver algunos documentos para algunos backends aquí:

http://matplotlib.org/api/index_backend_api.html

Las páginas enumeran solo algunos backends, algunos de ellos no tienen una documentación adecuada:

 matplotlib.backend_bases matplotlib.backends.backend_gtkagg matplotlib.backends.backend_qt4agg matplotlib.backends.backend_wxagg matplotlib.backends.backend_pdf matplotlib.dviread matplotlib.type1font 

Puede consultar la siguiente carpeta para obtener una lista de posibles backends …

 /Library/Python/2.6/site-packages/matplotlib/backends /usr/lib64/Python2.6/site-packages/matplotlib/backends