matplotlib PdfPages复合图像

时间:2014-05-27 20:00:18

标签: python matplotlib pdf-generation

我正在迭代一大堆字符串,并使用matplotlib的PdfPages后端为每个字符串制作PDF文件。当我一次只做一个(而不是遍历所有字符串)时,它的效果很好。然而,当我迭代时,我得到了大量额外的线条,这些线条与我的传奇中的任何东西都不对应,这让我很困惑。我怀疑在我需要它之后,一个物体就会出现问题。这是我正在编写的伪代码:

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages

def main():
    stringList = import(stringList) #Not an actual function, this is just where I get my list
    for s in stringList:
        pp = PdfPages(s+'.pdf')
        plotData(s, pp)
        pp.close()

def plotData(s, pp):
    dataList1, dataList2 = importData(s) #Again, not an actual function, just getting my data

    #Make first figure
    firstFig = plt.figure("first")
    firstax = firstFig.add_subplot(111)
    firstFig.suptitle("First")
    xaxis = [x for x in range(len(dataList1))]
    firstax.plot(xaxis, dataList2, label='local max')
    tempax.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3,
       ncol=2, mode="expand", borderaxespad=0.)
    pp.savefig()

    #Make second figure
    #Exactly the same thing....

    #Make third figure
    #Exactly the same thing...

同样,我认为它与我如何使用这些对象有关,而且文档非常干燥(我保证我整天都在这里)但是如果有人知道这里发生了什么,我我很感激!

1 个答案:

答案 0 :(得分:2)

通过将字符串指定为plt.figure()的参数,您将重复使用相同的数字 每次循环。处理此问题的最简单方法是不指定字符串并使用

fig = plt.figure()

放一个

也很好
plt.close('all')

在每个循环的底部释放pyplot对图形对象的所有引用。