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

时间:2013-07-22 13:19:48

标签: python matplotlib

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

plt.savefig(filename1 +  '.pdf')

plt.savefig(filename1 +  '.jpg')

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

3 个答案:

答案 0 :(得分:43)

使用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()

答案 1 :(得分:15)

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

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

>>> 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')

...将这两个图表生成到他们自己的“.png”文件中: enter image description here

enter image description here

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

>>> 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')

上面的脚本生成了这个单独的“.png”文件: enter image description here

答案 2 :(得分:0)

我也遇到了同样的问题。我试图将 2,000 个散点图放入单个 .pdf 中。我能够开始该程序,但它在几百后中止。 即使我在一个 .pdf 中创建了六个散点图,对于六个 .jpg 的 .pdf 文件,每个 30kb 的 .pdf 文件也是巨大的(比如 7mb)。当我打开 .pdf 时,似乎 .pdf 正在绘制图表上的每个点(每个图表都有数千个点),而不是显示图像。总有一天,我会找出正确的选项,但这里有一个快速而肮脏的解决方法。我将散点图打印到本地目录中的单个 .jpg 文件中。