matplotlib.pyplot
,plt.clf()
和 和有什么不一样plt.close()
?它们会以同样的方式运作吗?
我正在运行一个循环,在每次迭代结束时我都会生成一个图形并保存该图。在第一次尝试中,情节在随后的每个情节中都保留了旧数字。我正在寻找没有旧数字的每次迭代的单独图,我使用哪一个重要吗?我正在运行的计算需要很长时间,并且测试它会非常耗时。
matplotlib.pyplot
,plt.clf()
和 和有什么不一样plt.close()
?它们会以同样的方式运作吗?
我正在运行一个循环,在每次迭代结束时我都会生成一个图形并保存该图。在第一次尝试中,情节在随后的每个情节中都保留了旧数字。我正在寻找没有旧数字的每次迭代的单独图,我使用哪一个重要吗?我正在运行的计算需要很长时间,并且测试它会非常耗时。
plt.close()
将完全关闭图形窗口,其中plt.clf()
将清除图形 - 您仍然可以在其上绘制另一个图。
听起来,根据您的需要,您应该更喜欢plt.clf()
,或者更好的是保留对线对象本身的句柄(它们通过plot
调用在列表中返回)并.set_data
在后续迭代中使用这些对象。
我认为值得一提的是plt.close()
释放内存,因此在一次生成和保存多个数字时是首选。
在这种情况下使用plt.clf()
将在 20 个图后产生警告(即使它们不会由 显示plt.show()
):
已经打开了20多个数字。通过 pyplot 接口 (
matplotlib.pyplot.figure
) 创建的图形会一直保留到显式关闭,并且可能会消耗太多内存。
plt.clf()
清除整个当前图形及其所有轴,但使窗口保持打开状态,以便可以将其重新用于其他绘图。
plt.close()
关闭一个窗口,如果没有另外指定,它将是当前窗口。
这两个函数之间存在细微差别。
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()