根据Matplotlib文档,matplotlib.figure.save_fig
采用可选参数format
(参见matplotlib.figure documentation)。
此参数采用“活动后端支持的文件扩展名之一”(如官方文档所述)。
我的观点是:对于特定的后端,如何知道支持的扩展名列表?
可通过matplotlib.rcsetup.all_backends
访问可用后端列表。这些后端在matplotlib.backends
中可用,但我找不到检索支持的扩展的方法。
答案 0 :(得分:38)
如果您创建了一个图形,您可以使用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'
}
它将列出您可以输出当前对象的所有格式。
答案 1 :(得分:3)
位于每个后端的FigureCanvasBase
类都有get_supported_filetypes
方法。
backend_agg
:
figure = matplotlib.figure.Figure()
fcb = matplotlib.backends.backend_agg.FigureCanvasBase(figure)
supported_file_types = fcb.get_supported_filetypes()
supported_file_types
包含:
{'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'}
剩下的一个问题.... matplotlib.get_backend()
会返回"agg"
。是否有更简单的方法直接指向正确的后端模块?
答案 2 :(得分:0)
以下是渲染器和文件类型的列表:http://matplotlib.sourceforge.net/faq/installing_faq.html#what-is-a-backend
除此之外,各个后端在各自的get_supported_filetypes
类中都有FigureCanvas{backend-name}
方法,它提供了支持的文件格式列表。