3

我想制作一系列图,并将每个图保存到文件中。但我不知道如何抹去以前的情节。也许我每次都需要创建一些新对象,但我不知道会是哪个对象。这是我的代码,请注意注释。这是我的代码:

import matplotlib.pyplot as plt
ind = (1,2,3,4)
groups=(
  (1, (1.1,1.2,1.3,1.4)),
  (2, (2.2,2.2,1.2,2.4)),
)

for group in reversed(groups):
  #clean the slate ?
  plt.bar(ind   ,group[1])
  plt.xticks([i+0.5 for i in ind],ind)
  plt.savefig('%d.png' % group[0])
4

1 回答 1

5

不要每次都创建一个新图形plt.figure(),你会很快耗尽内存。而是使用(分别用于图形和轴):

plt.clf()
plt.cla()

您可以运行plt.close()以释放分配,但是过去曾有人讨论过这种方法会导致内存泄漏。快速测试表明,在版本中1.1.1rc这可以正常工作,因此请随意使用它作为替代方案。一个有用的相关问题讨论了这些方法之间的差异。

于 2012-05-30T15:28:40.090 回答