保存带有多个扩展名的数字?

时间:2013-06-24 15:48:44

标签: matplotlib

在matplotlib中,有没有(特别聪明的)方法来保存带有多个扩展名的数字?

使用案例:我通常需要.png来快速查看,上传到网络等。但对于出版品质的数据,我想要.pdf或.eps文件。通常,我想要所有3个。

这并不难:

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

但它确实涉及大量的重写代码(因为我现在通常只有savefig(figname+'.png')),这对于方便的包装函数来说似乎很容易。

2 个答案:

答案 0 :(得分:3)

您可以使用format指定文件类型,如the documentation for savefig所示。但据我所知,你只能指定一种格式。

虽然不是特别聪明,但为了最小化重写代码,您应该编写save_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但是我觉得这样的事情可以帮助减少重复代码的总量。

答案 1 :(得分:3)

如果你总是这样做

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(...)

那将需要更多的努力。