zoukankan      html  css  js  c++  java
  • matplotlib清除 axes 和 figure

    matplotlib清除 axes 和 figure

    一、总结

    一句话总结:

    plt.cla() # 清除axes,即当前 figure 中的活动的axes,但其他axes保持不变。
    plt.clf() # 清除当前 figure 的所有axes,但是不关闭这个 window,所以能继续复用于其他的 plot。
    plt.close() # 关闭 window,如果没有指定,则指当前 window。

    二、matplotlib清除 axes 和 figure

    转自或参考:https://blog.csdn.net/tz_zs/article/details/81393098

    ____tz_zs

    figure 的重复利用能大大节约时间,但是 matplotlib 维护的 figure 有数量上限(RuntimeWarning: More than 20 figures have been opened.)。并且,不断的创建新的 figure 实例,很容易造成内存泄漏,而应合理的复用,能大大的提高运行速度。此外,在某些情况下,不清理 figure 将有可能造成在第一幅中 plot 的线再次出现在第二幅图中。

    以下包括:
    plt.cla() # 清除axes,即当前 figure 中的活动的axes,但其他axes保持不变。
    plt.clf() # 清除当前 figure 的所有axes,但是不关闭这个 window,所以能继续复用于其他的 plot。
    plt.close() # 关闭 window,如果没有指定,则指当前 window。

    plt.cla()

    plt.cla() # 清除axes,即当前 figure 中的活动的axes,但其他axes保持不变。

    pyplot.py 源码

    # This function was autogenerated by boilerplate.py.  Do not edit as
    # changes will be lost
    @docstring.copy_dedent(Axes.cla)
    def cla():
        ret = gca().cla()
        return ret
    

    axes/_base.py 源码

    def cla(self):
        """Clear the current axes."""
        # Note: this is called by Axes.__init__()
    
        # stash the current visibility state
        ......
        ......
        ......
    

    plt.clf()

    plt.clf() # 清除当前 figure 的所有axes,但是不关闭这个 window,所以能继续复用于其他的 plot。

    pyplot.py 源码

    def clf():
         """
         Clear the current figure.
         """
         gcf().clf()
    

    figure.py 源码

    def clf(self, keep_observers=False):
        """
        Clear the figure.
    
        Set *keep_observers* to True if, for example,
        a gui widget is tracking the axes in the figure.
        """
        self.suppressComposite = None
        self.callbacks = cbook.CallbackRegistry()
    
        for ax in tuple(self.axes):  # Iterate over the copy.
            ax.cla()
            self.delaxes(ax)         # removes ax from self._axstack
    
        toolbar = getattr(self.canvas, 'toolbar', None)
        if toolbar is not None:
            toolbar.update()
        self._axstack.clear()
        self.artists = []
        self.lines = []
        self.patches = []
        self.texts = []
        self.images = []
        self.legends = []
        if not keep_observers:
            self._axobservers = []
        self._suptitle = None
        self.stale = True
    

    plt.close()

    plt.close() # 关闭 window,如果没有指定,则指当前 window。

    pyplot.py 源码

    def close(*args):
        """
        Close a figure window.
    
        ``close()`` by itself closes the current figure
    
        ``close(fig)`` closes the `~.Figure` instance *fig*
    
        ``close(num)`` closes the figure number *num*
    
        ``close(name)`` where *name* is a string, closes figure with that label
    
        ``close('all')`` closes all the figure windows
        """
    
        if len(args) == 0:
            figManager = _pylab_helpers.Gcf.get_active()
            if figManager is None:
                return
            else:
                _pylab_helpers.Gcf.destroy(figManager.num)
        elif len(args) == 1:
            arg = args[0]
            if arg == 'all':
                _pylab_helpers.Gcf.destroy_all()
            elif isinstance(arg, six.integer_types):
                _pylab_helpers.Gcf.destroy(arg)
            elif hasattr(arg, 'int'):
                # if we are dealing with a type UUID, we
                # can use its integer representation
                _pylab_helpers.Gcf.destroy(arg.int)
            elif isinstance(arg, six.string_types):
                allLabels = get_figlabels()
                if arg in allLabels:
                    num = get_fignums()[allLabels.index(arg)]
                    _pylab_helpers.Gcf.destroy(num)
            elif isinstance(arg, Figure):
                _pylab_helpers.Gcf.destroy_fig(arg)
            else:
                raise TypeError('Unrecognized argument type %s to close' % type(arg))
        else:
            raise TypeError('close takes 0 or 1 arguments')
    

    使用例子:

    fig = plt.gcf() #获取当前figure
    
    plt.close(fig) #关闭传入的 figure 对象
    

    或者:

    plt.close('all') #关闭所有 figure windows
    

    参考:

    warning-about-too-many-open-figures
    matplotlib 之 RuntimeWarning: More than 20 figures have been opened.

     
    我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站: fanrenyi.com;有各种前端、后端、算法、大数据、人工智能等课程。
    博主25岁,前端后端算法大数据人工智能都有兴趣。
    大家有啥都可以加博主联系方式(qq404006308,微信fan404006308)互相交流。工作、生活、心境,可以互相启迪。
    聊技术,交朋友,修心境,qq404006308,微信fan404006308
    26岁,真心找女朋友,非诚勿扰,微信fan404006308,qq404006308
    人工智能群:939687837

    作者相关推荐

  • 相关阅读:
    FastAPI(38)- 模拟一个跨域场景
    FastAPI(37)- Middleware 中间件
    Python
    Python
    FastAPI(35)- 依赖项中使用 yield + Context Manager 上下文管理器
    汇编 | CPU物理地址本质理解
    汇编 | DosBox初步接触的一些初始化设置(窗口大小 & 默认命令)
    汇编语言 第3版 王爽 检测点答案及详细解析 (更新中)
    JSP | Tomcat目录结构详解
    JSP常见错误以及解决方案
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/13961927.html
Copyright © 2011-2022 走看看