在matplotlib中,有没有(特别聪明的)方法来保存带有多个扩展名的数字?
使用案例:我通常需要.png来快速查看,上传到网络等。但对于出版品质的数据,我想要.pdf或.eps文件。通常,我想要所有3个。
这并不难:
for suffix in 'png eps pdf'.split():
pl.savefig(figname+"."+suffix)
但它确实涉及大量的重写代码(因为我现在通常只有savefig(figname+'.png')
),这对于方便的包装函数来说似乎很容易。
答案 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(...)
那将需要更多的努力。