In Matplotlib, is there a way to know the list of available output format

Question:

According to Matplotlib documentation, matplotlib.figure.save_figtakes an optional argument format (see matplotlib.figure documentation).

This parameters takes ‘one of the file extensions supported by the active backend’ (as said by the official documentation).

My point is: how to know, for a specific backend, the list of supported extensions?

The list of available backends is accessible thru matplotlib.rcsetup.all_backends. These backends are available in matplotlib.backends but, I do not find a way to retrieve supported extensions.

Asked By: ohe

||

Answers:

The FigureCanvasBase class, located in each backends has a get_supported_filetypes method.

For backend_agg:

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

supported_file_types contains:

{'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'}

One remaining question …. matplotlib.get_backend() returns "agg". Is there an easier way to directly point to the correct backend module?

Answered By: ohe

If you create a figure, you can get the available supported file format with the canvas object :

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

and it will list all the formats in which you can output your current object.

Answered By: Cédric Julien

Here is a list of renderers and file types: http://matplotlib.sourceforge.net/faq/installing_faq.html#what-is-a-backend
Beyond that, individual backends have get_supported_filetypes method in their respective FigureCanvas{backend-name} class that gives a list of supported file formats.

Answered By: subhacom
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.