Reputation: 3683
According to Matplotlib documentation, matplotlib.figure.save_fig
takes 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.
Upvotes: 34
Views: 13299
Reputation: 919
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.
Upvotes: 0
Reputation: 80831
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.
Upvotes: 44
Reputation: 3683
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?
Upvotes: 4