Python pyplot对象和行为的解释

Python pyplot对象和行为的解释,python,matplotlib,plot,Python,Matplotlib,Plot,我的问题属于“过于宽泛”的范畴,但我已经搜索了几个小时,我的问题仍然存在 我使用自己的绘图仪功能在循环中绘制多个(比如10个)绘图,然后使用savefig()保存它们。在那之后,我想制作另一个情节并展示它。无论我做什么,我仍然会得到9或10个额外的有效/空绘图 for ...: pyplot = Plotter.plotStuff(data[i]) pyplot.savefig(path) pyplot.clf() pyplot.plot(new_data) pyplot

我的问题属于“过于宽泛”的范畴,但我已经搜索了几个小时,我的问题仍然存在

我使用自己的绘图仪功能在
循环中绘制多个(比如10个)绘图,然后使用
savefig()
保存它们。在那之后,我想制作另一个情节并展示它。无论我做什么,我仍然会得到9或10个额外的有效/空绘图

for ...:
    pyplot = Plotter.plotStuff(data[i])
    pyplot.savefig(path)
    pyplot.clf()
pyplot.plot(new_data)
pyplot.show() # showing additional plots
我的主要问题是:我怎样才能“重新开始”并删除我以前的情节?我尝试了
pyplot.clf()
pyplot.cla()
pyplot.hold(False)

另外,有人能解释一下pyplot/figure/subplot动力学是如何工作的吗?它什么时候生成新的绘图?我的数据/以前的绘图存储在哪里?我以前有过“额外的空绘图”问题,但我重新排序了命令,直到它起作用,但我仍然不知道为什么

例如,我有
figure()、subplot\u adjust()、plot()、xticks()、yticks()
命令(按此顺序)。订单应该是什么?为什么


非常感谢,我正在努力工作。

我绝不是专家,但据我所知,您使用
figure()
打开并创建一个新的figure对象。您可以为该函数提供一个参数,以标识不同的图形,即
图(7)
,否则我想它们只是枚举的

然后,您可以将内容放入figure对象中,然后在您的figure上使用
savefig()、draw()、show()
。 您还可以使用
close()
关闭您创建的最后一个地物,或者在此处再次使用标识符


因此,对于您的特定问题,我认为for循环末尾的
close()
应该可以解决这个问题。

在这一行中:
pyplot=Plotter.plotStuff(data[I])
您在
pyplot
的顶部赋值,因此,如果您希望
pyplot
包含与
matplotlib.pyplot
模块相同的函数,您将失望。如果不知道Plotter.plotStuff返回什么类型的对象,@ali\m
plotStuff
函数包含
pyplot.figure()
,…,
pyplot.yticks()
我提到的,然后
返回pyplot
。实际上,当我在下面的回答中提到@cmmnn时,我放置了一个
pyplot.close()
,它正在工作,用一个修改过的
pyplot
模块过度定义
pyplot
模块不是问题。仍然重命名它只是为了确定。@ali\m的pyplot行为:它看起来类似于xlwings,您可以使用
pyplot.figure(number)
选择图形。然后您只需调用pyplot函数,如
pyplot.function()
,它将对所选图形产生效果。但是,如果我尝试以以下方式更改颜色周期,它将生成一个空的图4,并将这些图放在图5上:
pyplot.figure(4),ax=pyplot.subPlot()[1],ax.set_prop_cycle(cycler('color',['y','r']),pyplot.plot(数据)
谢谢,这很有效!但是,我仍然不确定所有事情,请看我对@ali_m的回复,也许你能帮上忙。很高兴我能提供一些帮助,我很惊讶没有matplotlib专家来这里给出更好的答案。我总是在matplotlib缩略图库中单击,直到找到我需要的内容,然后想到一个快速工作的fix可能是需要的,直到matplotlib大师出现并以更深的理解启发我们。