50

在 python 中(对于在 GUI 中创建的一个图形),我可以使用以下任一方法将图形保存在 .jpg 和 .pdf 下:

plt.savefig(filename1 +  '.pdf')

或者

plt.savefig(filename1 +  '.jpg')

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

4

3 回答 3

87

用来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()
于 2013-07-22T13:23:35.467 回答
18

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

这是使用一个脚本保存两个不同图形的方法。

>>> 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”文件中: 在此处输入图像描述

在此处输入图像描述

要将它们保存到同一个文件中,请使用subplots

>>> 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”文件: 在此处输入图像描述

于 2013-07-22T13:35:45.107 回答
0

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

于 2021-07-01T16:44:01.020 回答