Python将多个数字保存为一个PDF文件

Ahm*_*iri 25 python matplotlib

在python中(对于在GUI中创建的一个图形),我能够通过使用以下方式将图形保存在.jpg和.pdf下:

plt.savefig(filename1 +  '.pdf')
Run Code Online (Sandbox Code Playgroud)

要么

plt.savefig(filename1 +  '.jpg')
Run Code Online (Sandbox Code Playgroud)

使用一个文件我想以.pdf或.jpg保存多个数字(就像在数学实验室中完成的那样).任何人都可以帮忙吗?

Min*_*xer 50

使用PdfPages为您解决问题.将您的figure对象传递给savefig方法.

例如,如果您figure打开了一大堆对象,并且希望将它们保存为多页PDF,则可以执行以下操作:

import matplotlib.backends.backend_pdf
pdf = matplotlib.backends.backend_pdf.PdfPages("output.pdf")
for fig in xrange(1, figure().number): ## will open an empty extra figure :(
    pdf.savefig( fig )
pdf.close()
Run Code Online (Sandbox Code Playgroud)

  • 另外,我忘了推荐的一件事是你应该去pyplot.gcf().number + 1 (3认同)
  • 我不得不使用 pyplot.gcf().number,我建议您使用它,因为它的适用范围更广。 (2认同)
  • @jimh好的建议,谢谢!使用`plt.gcf()。number + 1'(当然,将“ import matplotlib.pyplot作为plt`)代替`figure()。number`可以完成此工作。(我使用的是Python 3.5。) (2认同)

Bre*_*ris 14

您是指将多个数字保存一个文件中,还是使用一个脚本保存多个数字?

以下是使用一个脚本保存两个不同数字的方法.

>>> from matplotlib import pyplot as plt
>>> fig1 = plt.figure()
>>> plt.plot(range(10))
[<matplotlib.lines.Line2D object at 0x10261bd90>]
>>> fig2 = plt.figure()
>>> plt.plot(range(10,20))
[<matplotlib.lines.Line2D object at 0x10263b890>]
>>> fig1.savefig('fig1.png')
>>> fig2.savefig('fig2.png')
Run Code Online (Sandbox Code Playgroud)

...将这两个图产生到他们自己的".png"文件中: 在此输入图像描述

在此输入图像描述

要将它们保存到同一文件,请使用子图:

>>> from matplotlib import pyplot as plt
>>> fig = plt.figure()
>>> axis1 = fig.add_subplot(211)
>>> axis1.plot(range(10))
>>> axis2 = fig.add_subplot(212)
>>> axis2.plot(range(10,20))
>>> fig.savefig('multipleplots.png')
Run Code Online (Sandbox Code Playgroud)

上面的脚本生成了这个单独的".png"文件: 在此输入图像描述

  • 这不是一个好的答案,因为OP不会询问如何在同一个图中绘制多个子图并保存它,也不会询问如何保存到单独的文件 - 可能这是显而易见的.问题是将单独的数字保存到同一个文件中. (7认同)
  • 我认为这应该是接受的答案,因为它确实在没有使用外部库合并两个pdf文件的情况下确实要求OP. (2认同)