Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
617 views
in Technique[技术] by (71.8m points)

matplotlib - How to "clean the slate"?

I want to make a series of plots, and save each to a file. But I don't know how to wipe previous plots off. Maybe I need to create some new object for each time, but I don't which object that would be. Here is my code, notice the comment. This is my code:

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])
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

DO NOT create a new figure each time with plt.figure(), you'll wind up running out of memory rather quickly. Instead use (for the figure and the axes respectively):

plt.clf()
plt.cla()

You can run plt.close() to free up the allocation, however there has been some discussion that this method has lead to memory leaks in the past. A quick test shows that in version 1.1.1rc this works without problems, so feel free to use it as an alternative. A useful related question discuses the differences between the methods.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...