Python 关闭Matplotlib图形

Python 关闭Matplotlib图形,python,matplotlib,Python,Matplotlib,我正在使用Matplotlib和MPLD3创建可以在html页面中显示的图形(使用django)。目前,我的图表是从csv文件中提取的数据动态生成的。每隔一段时间,我就会在终端上收到这样的信息: 运行时警告:已打开20多个数字。通过pyplot接口(matplotlib.pyplot.figure)创建的图形将保留到显式关闭,并且可能会消耗太多内存。(要控制此警告,请参阅rcParam图。max_num_图)。 最大\u打开\u警告,运行时警告) 我真的不确定这意味着什么,但我假设这意味着我应该

我正在使用Matplotlib和MPLD3创建可以在html页面中显示的图形(使用django)。目前,我的图表是从csv文件中提取的数据动态生成的。每隔一段时间,我就会在终端上收到这样的信息:

运行时警告:已打开20多个数字。通过pyplot接口(
matplotlib.pyplot.figure
)创建的图形将保留到显式关闭,并且可能会消耗太多内存。(要控制此警告,请参阅rcParam
图。max_num_图
)。 最大\u打开\u警告,运行时警告)


我真的不确定这意味着什么,但我假设这意味着我应该有一些方法来关闭未使用的图形。到底是有什么办法,还是我完全偏离了底线?谢谢

如果不通过pyplot接口创建图形,图形将自动关闭(通过垃圾收集)。例如,您可以使用以下方法创建图形:

from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure


def new_fig():
    """Create a new matplotlib figure containing one axis"""
    fig = Figure()
    FigureCanvas(fig)
    ax = fig.add_subplot(111)

    return fig, ax
(基于)

我更喜欢评论中的答案,但不得不搜索它

完成绘图后,请清理绘图:

plt.close(图)


plt.close('all')

不确定这是最佳副本。简单的回答是,你应该在完成绘图后清理它们:
plt.close(图)
plt.close('all')
@tcaswell为什么不将此添加为答案?奇怪的是,我想知道为什么图中没有
close()
方法。是的!为什么
fig.close()
不起作用?@DanHickstein关闭方法似乎没有在图(参考)上实现,我使用的是matpltlib版本:3.0.3,plt.close()对我有效。