在我的代码中,我试图定期创建图表并将图表保存到文件中。代码如下所示:
import pylab as p
def simpledist(speclist,totalbugs,a):
data = [float(spec.pop)/float(totalbugs) for spec in speclist]
p.hist(data)
p.savefig('/Home/s1215235/Documents/python/newfolder/' + str(a) + '.png')
(a
是一个柜台)
然而,这样做意味着创建的每个新绘图都会在之前的图上重叠。我怎么能让它知道,一旦我保存了这个数字,我想让它开始一个新的数字?
答案 0 :(得分:8)
要清除图表,请使用p.clf
def simpledist(speclist,totalbugs,a):
data = [float(spec.pop)/float(totalbugs) for spec in speclist]
p.clf()
p.hist(data)
p.savefig('/Home/s1215235/Documents/python/newfolder/' + str(a) + '.png')
假设p
是matplotlib.pyplot
或figure
实例,也是@bernie所说的 - 也可以正常工作。
@ Yann的评论
如果您已经设置了标题,轴标签等,那么这将取消所有这些设置。更好的是按照他的说法去尝试
p.gca().cla()
保持你的辛勤工作。谢谢Yann!
答案 1 :(得分:2)
编辑:从绩效的角度来看,danodonovan的答案很可能比这个更好。
您没有展示如何创建p
,但我认为它类似于:
import matplotlib.pyplot as plt
p = plt.figure()
在这种情况下,您只需要确保每次都创建一个新的数字。例如:
def simpledist(speclist,totalbugs,a):
data = [float(spec.pop)/float(totalbugs) for spec in speclist]
p = plt.figure() # let's have a new figure why don't we
p.hist(data)
p.savefig('/Home/s1215235/Documents/python/newfolder/' + str(a) + '.png')
答案 2 :(得分:2)
您也可以将hold
关闭(doc)
import pylab as p
ax = p.gca()
ax.hold(False)
def simpledist(speclist,totalbugs,a):
data = [float(spec.pop)/float(totalbugs) for spec in speclist]
ax.hist(data)
ax.figure.savefig('/Home/s1215235/Documents/python/newfolder/' + str(a) + '.png')
当你添加新的情节时,它将为你清除轴。
如果你有很多其他艺术家,并且只想删除最新的艺术家,你可以使用艺术家的remove
实例功能。
import pylab as p
ax = p.gca()
# draw a bunch of stuff onto the axse
def simpledist(speclist,totalbugs,a):
data = [float(spec.pop)/float(totalbugs) for spec in speclist]
n, bins, h_art = ax.hist(data)
ax.figure.savefig('/Home/s1215235/Documents/python/newfolder/' + str(a) + '.png')
for ha in h_art:
h_a.remove()
# ax.figure.canvas.draw() # you might need this