Matplotlib提供了以下函数:
cla() # Clear axis
clf() # Clear figure
close() # Close a figure window
我应该什么时候使用每个函数,它到底做什么?
Matplotlib提供了以下函数:
cla() # Clear axis
clf() # Clear figure
close() # Close a figure window
我应该什么时候使用每个函数,它到底做什么?
当前回答
Plt.cla()表示清电流轴
Plt.clf()表示明确的当前数字
还有plt.gca()(获取当前轴)和plt.gcf()(获取当前图形)
在这里阅读更多:Matplotlib, Pyplot, Pylab等:它们之间的区别是什么?什么时候使用它们?
其他回答
它们都做不同的事情,因为matplotlib使用分层顺序,其中图形窗口包含可能由多个轴组成的图形。此外,还有来自pyplot接口的函数和Figure类的方法。我将在下面讨论这两种情况。
pyplot接口
Pyplot是一个模块,它收集了几个允许以函数式方式使用matplotlib的函数。我在这里假设pyplot已作为import matplotlib导入。Pyplot = plt。 在这种情况下,有三个不同的命令可以删除东西:
看到matplotlib。pyplot功能:
Plt.cla()清除一个轴,即当前图中的当前活动轴。它不影响其他轴。 Plt.clf()清除整个当前图形及其所有轴,但保持窗口打开,以便其他图形可以重用它。 Plt.close()关闭一个窗口,如果没有指定的话,该窗口将是当前窗口。
因此,哪种函数最适合您取决于您的用例。
close()函数还允许指定应该关闭哪个窗口。参数可以是使用figure(number_or_name)创建窗口时给定的数字或名称,也可以是获得的图形实例图,即usingfig = figure()。如果没有为close()提供参数,则当前活动窗口将被关闭。此外,还有语法close('all'),它关闭所有数字。
方法
另外,Figure类提供了清除图形的方法。 我将在下面假设fig是一个Figure的实例:
Fig.clf()清除整个图形。只有当fig为当前图形时,此调用才等效于plt.clf()。
Fig.clear()是fig.clf()的同义词。
注意,即使del fig也不会关闭相关的图形窗口。据我所知,关闭图形窗口的唯一方法是使用上面描述的plt.close(图)。
这是我今天发现的一个警告。 如果你有一个函数调用一个plot很多次,你最好使用plt.close(fig)而不是fig.clf(),不知为何第一个不会在内存中累积。简而言之,如果内存是一个问题,请使用plt.close(图)(尽管似乎有更好的方法,请到这条评论的末尾查看相关链接)。
因此,下面的脚本将生成一个空列表:
for i in range(5):
fig = plot_figure()
plt.close(fig)
# This returns a list with all figure numbers available
print(plt.get_fignums())
而这个会产生一个有五位数的列表。
for i in range(5):
fig = plot_figure()
fig.clf()
# This returns a list with all figure numbers available
print(plt.get_fignums())
从上面的文档,我不清楚关闭一个图形和关闭一个窗口之间的区别是什么。也许这能解释清楚。
如果你想尝试一个完整的脚本,你有:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1000)
y = np.sin(x)
for i in range(5):
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(x, y)
plt.close(fig)
print(plt.get_fignums())
for i in range(5):
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(x, y)
fig.clf()
print(plt.get_fignums())
如果内存是一个问题,有人已经在SO中发布了一个工作区,请参阅: 创建引用计数的图形
Plt.cla()表示清电流轴
Plt.clf()表示明确的当前数字
还有plt.gca()(获取当前轴)和plt.gcf()(获取当前图形)
在这里阅读更多:Matplotlib, Pyplot, Pylab等:它们之间的区别是什么?什么时候使用它们?