En Matplotlib, hay una manera de conocer la lista de formatos de salida disponibles

De acuerdo con la documentación de Matplotlib, matplotlib.figure.save_fig toma un format argumento opcional (consulte la documentación de matplotlib.figure ).

Estos parámetros toman ‘una de las extensiones de archivo admitidas por el backend activo’ (como se dice en la documentación oficial).

Mi punto es: ¿cómo saber, para un backend específico, la lista de extensiones compatibles?

La lista de backends disponibles es accesible a través de matplotlib.rcsetup.all_backends . Estos backends están disponibles en matplotlib.backends pero, no encuentro una forma de recuperar las extensiones compatibles.

Si crea una figura, puede obtener el formato de archivo compatible con el objeto de canvas:

 import matplotlib.pyplot as plt fig = plt.figure() print fig.canvas.get_supported_filetypes() >>> { 'svgz': 'Scalable Vector Graphics', 'ps': 'Postscript', 'emf': 'Enhanced Metafile', 'rgba': 'Raw RGBA bitmap', 'raw': 'Raw RGBA bitmap', 'pdf': 'Portable Document Format', 'svg': 'Scalable Vector Graphics', 'eps': 'Encapsulated Postscript', 'png': 'Portable Network Graphics' } 

y listará todos los formatos en los que puede generar su objeto actual.

La clase FigureCanvasBase , ubicada en cada backends tiene un método get_supported_filetypes .

Para backend_agg :

 figure = matplotlib.figure.Figure() fcb = matplotlib.backends.backend_agg.FigureCanvasBase(figure) supported_file_types = fcb.get_supported_filetypes() 

supported_file_types contiene:

 {'emf': 'Enhanced Metafile', 'eps': 'Encapsulated Postscript', 'pdf': 'Portable Document Format', 'png': 'Portable Network Graphics', 'ps': 'Postscript', 'raw': 'Raw RGBA bitmap', 'rgba': 'Raw RGBA bitmap', 'svg': 'Scalable Vector Graphics', 'svgz': 'Scalable Vector Graphics'} 

Una pregunta restante … matplotlib.get_backend() devuelve "agg" . ¿Hay una manera más fácil de apuntar directamente al módulo de backend correcto?

Aquí hay una lista de procesadores y tipos de archivos: http://matplotlib.sourceforge.net/faq/installing_faq.html#what-is– backend Además de eso, los backends individuales tienen el método get_supported_filetypes en sus respectivas FigureCanvas{backend-name} Clase que da una lista de formatos de archivo soportados.