【发布时间】:2016-05-17 03:11:22
【问题描述】:
我的问题属于“过于宽泛”的类别,但我已经搜索了几个小时,但我的问题仍然存在。
我正在使用我自己的 Plotter 函数在 for 循环中制作多个(比如 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(), subplots_adjust(), plot(), xticks(), yticks() 命令(按此顺序)。应该是什么顺序,为什么?
非常感谢,我正在拔头发。
【问题讨论】:
-
在这一行中:
pyplot = Plotter.plotStuff(data[i])是在pyplot之上分配的,所以如果你期望pyplot包含与matplotlib.pyplot模块相同的功能,你会失望的。在不知道Plotter.plotStuff返回的对象类型的情况下,我无话可说。 -
@ali_m
plotStuff函数包含pyplot.figure(), ...,pyplot.yticks()我提到的,然后是return pyplot。实际上,当我将pyplot.close()作为下面答案中提到的@cmmnn 时,它正在工作,并且使用修改后的pyplot模块过度定义pyplot模块不是问题。仍然重命名它只是为了确定。 -
@ali_m 对于 pyplot 行为:它看起来类似于 xlwings 的行为,您选择带有
pyplot.figure(number)的图形。然后你只需调用像pyplot.function()这样的pyplot函数,它就会对选定的图形产生影响。但是,如果我尝试更改颜色循环,通过以下方式,它会生成一个空的图 4,并将图放在图 5 上:pyplot.figure(4), ax = pyplot.subplots()[1], ax.set_prop_cycle(cycler('color', ['y', 'r'])), pyplot.plot(data)
标签: python matplotlib plot