plt.close() 和 plt.clf() 的区别

新手上路,请多包涵

matplotlib.pyplot 中, plt.clf()plt.close() 之间有什么区别?他们会以同样的方式运作吗?

我正在运行一个循环,在每次迭代结束时,我都会生成一个图形并保存绘图。在最初的几次尝试中,该地块在随后的每一个地块中都保留了旧数字。我正在寻找没有旧数据的每次迭代的单独图,我使用哪个有关系吗?我正在运行的计算需要很长时间,测试它会非常耗时。

原文由 Joseph Clifford 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

plt.close() 将完全关闭图形窗口,其中 plt.clf() 将清除图形 - 您仍然可以在其上绘制另一个图。

听起来,为了您的需要,您应该更喜欢 plt.clf() ,或者更好的是保持对线对象本身的处理(它们通过 plot 调用在列表中返回)并使用 .set_data 在后续迭代中。

原文由 wim 发布,翻译遵循 CC BY-SA 3.0 许可协议

我认为值得一提的是 plt.close() 释放内存,因此在一次运行中生成和保存多个图形时是首选。

在这种情况下使用 plt.clf() 将在 20 个绘图后产生警告(即使它们不会被 plt.show() 显示):

已经打开了20多个数字。通过 pyplot 接口 ( matplotlib.pyplot.figure ) 创建的图形将保留到明确关闭,并且可能会消耗太多内存。

原文由 murnko 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏