2011-09-30 68 views
25

根據Matplotlib文檔,matplotlib.figure.save_fig採用可選參數format(請參閱matplotlib.figure documentation)。在Matplotlib中,有沒有辦法知道可用輸出格式列表

此參數取'活動後端支持的文件擴展名之一'(如官方文檔所述)。

我的觀點是:如何知道,對於特定的後端,支持的擴展名列表?

可用後端列表可通過matplotlib.rcsetup.all_backends訪問。這些後端在matplotlib.backends中可用,但是,我找不到檢索受支持擴展的方法。

回答

33

如果你創建一個人物,你可以得到與畫布對象的可用支持的文件格式:

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

,它會列出所有的格式,你可以輸出你的當前對象。

+0

不錯的一個...沒有看到圖形對象上的這個畫布屬性。 – ohe

+0

難以捉摸的魔法,它會在它癒合時燃燒。感謝你!我的Matplotlib工具腰帶現在變平了。 –

2

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"。有沒有更簡單的方法直接指向正確的後端模塊?

+0

'matplotlib.get_backend()'是常用的方法(對此不太容易?)。如果你想改變後端,你可以用'matplotlib.use'或者在matplotlibrc文件中設置,'matplotlib.matplotlib_fname()'會告訴你配置文件的位置。 – wim

+0

'matplotlib.get_backend()'返回一個原始的'str'而不是實際的後端模塊在大多數使用情況下在功能上是無用的。是的,你明顯得到了'getattr(matplotlib.backends,'backend_'+ matplotlib.get_backend()。lower())'你的方式來僞成功 - **但你不應該。**使用那種排序痛苦的駭客應該永遠是最後的手段。 –

相關問題