在Matplotlib中,有没有办法知道可用输出格式的列表

时间:2011-09-30 08:53:25

标签: python matplotlib

根据Matplotlib文档,matplotlib.figure.save_fig采用可选参数format(参见matplotlib.figure documentation)。

此参数采用“活动后端支持的文件扩展名之一”(如官方文档所述)。

我的观点是:对于特定的后端,如何知道支持的扩展名列表?

可通过matplotlib.rcsetup.all_backends访问可用后端列表。这些后端在matplotlib.backends中可用,但我找不到检索支持的扩展的方法。

3 个答案:

答案 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}方法,它提供了支持的文件格式列表。