为了账号安全,请及时绑定邮箱和手机立即绑定

何时使用CLA()、clf()或CLOSE()清除matplotlib中的绘图?

/ 猿问

何时使用CLA()、clf()或CLOSE()清除matplotlib中的绘图?

郎朗坤 2019-07-11 13:26:23

何时使用CLA()、clf()或CLOSE()清除matplotlib中的绘图?

Matplotlib提供了以下功能:

cla()   # Clear axisclf()   # Clear figureclose() # Close a figure window

这些文档并没有提供很多关于这些函数之间的区别的洞察力。我什么时候应该使用每个函数,它到底是做什么的?


查看完整描述

3 回答

?
慕森王

它们都做了不同的事情,因为matplotlib使用的是一个层次顺序,其中一个图形窗口包含一个图形,该图形可能由多个轴组成。此外,还有来自pyart接口的函数,并且在Figure班级,等级。我将在下面讨论这两种情况。

吡咯烷酮界面

pyplot是一个模块,它收集了几个允许以函数方式使用matplotlib的函数。我在这里假设pyplot已作为import matplotlib.pyplot as plt..在本例中,有三个不同的命令可以删除内容:

plt.cla()清除轴,即当前图形中的当前活动轴。它让其他的斧头不动。

plt.clf()清除整个当前数字。用它所有的斧头,却把窗户打开,这样它就可以再用在其他的地块上了。

plt.close()关上窗户,这将是当前窗口,如果没有指定的话。

因此,哪种功能最适合您,取决于您的用例。

这个close()函数还允许指定应关闭哪个窗口。参数可以是在创建窗口时使用的数字或名称。figure(number_or_name)或者它可以是一个图形实例fig获得,即使用fig = figure()..如果没有给出任何论据close(),当前活动的窗口将关闭。此外,还有语法close('all')关闭所有数字。

图类的方法

此外,Figure类提供用于清除数字的方法。我将在下面假设figFigure:

fig.clf()清除整个数字..此调用等效于plt.clf()只有当fig是目前的数字。

fig.clear()的同义词fig.clf()

请注意,即使del fig将不会关闭关联的图形窗口。据我所知,关闭图形窗口的唯一方法是使用plt.close(fig)如上文所述。


查看完整回答
反对 回复 2019-07-11
?
慕桂英546537

我今天发现了一个警告。如果有一个函数多次调用绘图,则最好使用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 availableprint(plt.get_fignums())

而这张名单上有五个数字。

for i in range(5):
    fig = plot_figure()
    fig.clf()# This returns a list with all figure numbers availableprint(plt.get_fignums())

从上面的文档中,我不清楚关闭图形和关闭窗口有什么区别。也许这会澄清。

如果您想尝试一个完整的脚本,您有:

import numpy as npimport 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())

如果记忆是一个问题,有人已经在其中发布了一个解决方案,请参见:创建一个引用计数的数字


查看完整回答
反对 回复 2019-07-11
?
墨色风雨

plt.cla()手段清电流轴

plt.clf()手段明确电流数字

另外,还有plt.gca()(获取当前轴)和plt.gcf()(获取当前数字)

在这里阅读更多:Matplotlib,Pyart,Pylab等:它们之间有什么区别,什么时候使用?


查看完整回答
反对 回复 2019-07-11

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信