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