【问题标题】:Explanation of pyplot objects and behaviourpyplot对象和行为的解释
【发布时间】: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


【解决方案1】:

我绝不是专家,但据我了解,您使用figure() 打开创建一个新的图形对象。你可以给这个函数一个参数来识别你的不同数字,即figure(7),否则我猜它们只是枚举。

然后您可以将东西放入您的图形对象中,然后在您的图形上使用savefig(), draw(), show()。 您也可以使用close() 关闭您创建的最后一个图形或在此处再次使用标识符。

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

【讨论】:

  • 谢谢,这成功了!但是,我仍然不确定一切,请参阅我对@ali_m 的回复,也许您可​​以提供帮助。
  • 很高兴我能提供一些帮助,我很惊讶没有 matplotlib 专家来到这里并给出更好的答案。我总是点击 matplotlib 缩略图库,直到找到我需要的东西,只是认为可能需要一个快速的工作修复,直到 matplotlib 大师出现并启发我们更深入的理解。
猜你喜欢
  • 1970-01-01
  • 2013-02-17
  • 1970-01-01
  • 1970-01-01
  • 2020-09-12
  • 1970-01-01
  • 2018-03-19
  • 2018-01-19
  • 1970-01-01
相关资源
最近更新 更多