在 matplotlib 中,是否有任何(特别聪明的)方法来保存具有多个扩展名的图形?
用例:我通常需要 .png 文件用于快速查看、上传到网络等。但对于出版质量的数字,我需要 .pdf 或 .eps 文件。通常,我想要全部 3 个。
不难做到:
for suffix in 'png eps pdf'.split():
pl.savefig(figname+"."+suffix)
Run Code Online (Sandbox Code Playgroud)
但它确实涉及大量重写代码(因为我现在通常只是savefig(figname+'.png')到处都有),这对于方便的包装函数来说似乎是一个简单的例子。
如果你总是这样做
from matplotlib import pyplot as pl
...
pl.savefig
Run Code Online (Sandbox Code Playgroud)
那么你可以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
Run Code Online (Sandbox Code Playgroud)
如果你通常这样做
fig=pl.figure()
fig.savefig(...)
Run Code Online (Sandbox Code Playgroud)
那么这将需要更多的努力。