30

matplotlib.pyplot,plt.clf()和 和有什么不一样plt.close()?它们会以同样的方式运作吗?

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

4

4 回答 4

40

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

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

于 2013-05-21T03:50:01.283 回答
9

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

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

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

于 2017-10-26T14:45:56.167 回答
2

plt.clf()清除整个当前图形及其所有轴,但使窗口保持打开状态,以便可以将其重新用于其他绘图。

plt.close()关闭一个窗口,如果没有另外指定,它将是当前窗口。

于 2017-07-07T17:09:10.120 回答
2

这两个函数之间存在细微差别。

plt.close() - 它在单独的窗口中完全绘制图形,释放内存,保留每个窗口以供查看。

plt.clf() - 我们可以说,它在同一个窗口中一个接一个地显示图形

为了说明,我绘制了两个带有参数 year 的图表,每个图表分别在 X 轴和 Y 轴上。最初我使用了封闭函数。它在两个单独的窗口中显示图形......</p>

后记,当我使用 clf() 运行程序时,它会清除图形并在同一窗口中显示下一个,即图 1。这是代码片段 -

    import matplotlib.pyplot as plt
    year = [2001,2002,2003,2004]
    Views= [12000,14000,16000,18000]
    Views2 = [15000,1800,24000,84000]
    plt.plot(year,Views)
    plt.show()
    plt.clf()
    plt.plot(year,Views2)
    plt.show()
    plt.clf()

图 1 具有关闭功能


图 2 具有关闭功能


图 1 具有 clf 功能


图 2 带有 clf 函数


于 2019-12-22T15:34:35.593 回答