我正在迭代一大堆字符串,并使用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...
同样,我认为它与我如何使用这些对象有关,而且文档非常干燥(我保证我整天都在这里)但是如果有人知道这里发生了什么,我我很感激!
答案 0 :(得分:2)
通过将字符串指定为plt.figure()
的参数,您将重复使用相同的数字
每次循环。处理此问题的最简单方法是不指定字符串并使用
fig = plt.figure()
放一个
也很好plt.close('all')
在每个循环的底部释放pyplot对图形对象的所有引用。