Python 一次将所有打开的matplotlib图形保存在一个文件中

Python 一次将所有打开的matplotlib图形保存在一个文件中,python,matplotlib,Python,Matplotlib,我试图将已创建的任意数量的matplotlib图形保存到一个文件(PDF?)中。 有没有一种方法可以用一个命令来实现这一点?MatPlotLib目前支持。使用此功能的实现将是: from matplotlib.backends.backend_pdf import PdfPages import matplotlib.pyplot as plt def multipage(filename, figs=None, dpi=200): pp = PdfPages(filename)

我试图将已创建的任意数量的matplotlib图形保存到一个文件(PDF?)中。
有没有一种方法可以用一个命令来实现这一点?

MatPlotLib目前支持。使用此功能的实现将是:

from matplotlib.backends.backend_pdf import PdfPages
import matplotlib.pyplot as plt

def multipage(filename, figs=None, dpi=200):
    pp = PdfPages(filename)
    if figs is None:
        figs = [plt.figure(n) for n in plt.get_fignums()]
    for fig in figs:
        fig.savefig(pp, format='pdf')
    pp.close()

示例用法 首先创造一些数字

import matplotlib.pyplot as plt
import numpy as np

fig1 = plt.figure()
plt.plot(np.arange(10))

fig2 = plt.figure()
plt.plot(-np.arange(3, 50), 'r-')
默认情况下,
multipage
将打印所有打开的图形

multipage('multipage.pdf')
这里唯一的问题是所有图形都以矢量(pdf)图形的形式呈现。如果您希望图形使用光栅图形(即,如果文件作为矢量太大),则在打印具有多个点的数量时,可以使用
rasterized=True
选项。在这种情况下,我包含的
dpi
选项可能很有用,例如:

fig3 = plt.figure()
plt.plot(np.random.randn(10000), 'g-', rasterized=True)

multipage('multipage_w_raster.pdf', [fig2, fig3], dpi=250)

在本例中,我选择只打印
fig2
fig3

如果我没有明确地将图形指定给变量会怎样?我想做一些类似于multipage('name.pdf',所有打开的图形)的事情。我修改了
multipage
函数,使其默认情况下使用
plt.get_fignums
函数打印所有打开的图形。太好了,谢谢。最后一个问题:有没有办法在一页纸上放几个数字?我不知道有什么办法可以做到这一点。大多数人都会使用
pyplot.subplot
在一个图形上放置多个轴,然后像正常一样打印该图形(即打印到“页面”),这对我来说是一个非常有用的功能。谢谢但是,您没有使用“dpi”参数。我想应该是这样的:
fig.savefig(pp,dpi=dpi,format='pdf')