Matplotlib 是否保存具有多个扩展名的地物?

Matplotlib 是否保存具有多个扩展名的地物?,matplotlib,Matplotlib,在matplotlib中,是否有任何(特别聪明的)方法可以保存具有多个扩展名的地物 用例:我通常想要.png的快速查看检查,上传到网络等,但对于出版物质量的数字,我想要.pdf或.eps文件。通常,我想要全部3个 这并不难做到: for suffix in 'png eps pdf'.split(): pl.savefig(figname+"."+suffix) 但是它确实涉及到大量的重写代码(因为我现在到处都有savefig(figname+'.png')),这似乎是一个方便的包装函

在matplotlib中,是否有任何(特别聪明的)方法可以保存具有多个扩展名的地物

用例:我通常想要.png的快速查看检查,上传到网络等,但对于出版物质量的数字,我想要.pdf或.eps文件。通常,我想要全部3个

这并不难做到:

for suffix in 'png eps pdf'.split():
    pl.savefig(figname+"."+suffix)

但是它确实涉及到大量的重写代码(因为我现在到处都有
savefig(figname+'.png')
),这似乎是一个方便的包装函数的简单例子。

您可以使用
格式
指定文件类型,如中所示。但据我所知,您只能指定一种格式

虽然不是特别聪明,但为了最小化重写代码,您应该编写一个
save\u fig
函数。这样就可以自动创建适当的文件名和质量

def save_fig(fig_name, quality="quick-look"):
    if "quick-look" in quality:
         # save fig with .png etc
    if "pub-qual" in quality:
         # save fig with increased dpi etc etc. 
可能不是你想要的答案,因为它需要你重写每一个savefig,但是我觉得这类事情可以帮助减少重复代码的总量

如果你总是这样做

from matplotlib import pyplot as pl
...
pl.savefig
然后您可以在一个地方简单地重新分配
pl.savefig
,这将影响所有地方

from matplotlib import pyplot as pl
def save_figs(fn,types=('.pdf',)):
    fig = pl.gcf()
    for t in types:
        fig.savefig(fn+t)
pl.savefig = save_figs
如果你经常这样做

fig=pl.figure()
fig.savefig(...)

那就需要更多的努力。

这是一个很好的方法,我很有可能会同意;如果matplotlib允许使用另一种类似的语法进行保存,那就太好了:
savefig(prefix,types=('png','pdf'))
,这与您所展示的类似。我会编写包装函数来获取扩展列表,然后在monkeypatch类中对其进行monkey修补。