相关疑难解决方法(0)

何时使用cla(),clf()或close()清除matplotlib中的图?

Matplotlib提供以下功能:

cla()   # Clear axis
clf()   # Clear figure
close() # Close a figure window
Run Code Online (Sandbox Code Playgroud)

该文档没有提供很多关于这些功能之间的区别的见解.我什么时候应该使用每个功能,它究竟做了什么?

plot matplotlib

492
推荐指数
3
解决办法
62万
查看次数

创建一个引用计数的数字

似乎在matplotlib中创建一个图形的标准方法并不像我在python中所期望的那样:默认情况下fig = matplotlib.figure(),在循环中调用将保留所有创建的数字,并最终耗尽内存.

相当 ,其处理的解决方法职位,但需要显式调用matplotlib.pyplot.close(fig)似乎有点hackish.我想要的是一个简单的方法来fig计算引用,所以我不必担心内存泄漏.有办法做到这一点吗?

python memory-management matplotlib

24
推荐指数
2
解决办法
7398
查看次数

matplotlib摆脱了max_open_warning输出

我写了一个脚本,调用QIIME中的函数来构建一堆图表.一切都运行良好完成,但matplotlib总是为它创建的每个绘图抛出以下反馈(超级烦人):

/usr/local/lib/python2.7/dist-packages/matplotlib/pyplot.py:412:RuntimeWarning:已打开超过20个数字.通过pyplot接口(matplotlib.pyplot.figure)创建的数字将保留,直到明确关闭,并可能消耗太多内存.(要控制此警告,请参阅rcParam figure.max_num_figures).max_open_warning,RuntimeWarning)

我发现这个页面似乎解释了如何解决这个问题,但在我按照指示后,没有任何变化:

import matplotlib as mpl
mpl.rcParams[figure.max_open_warning'] = 0
Run Code Online (Sandbox Code Playgroud)

我直接从python调用matplotlib后进入文件,看看我应该调查哪个rcparams文件并手动将20改为0.仍然没有变化.如果文档不正确,我也将其更改为1000,仍然收到相同的警告消息.

我知道这对于在功率有限的计算机上运行的人来说可能是一个问题,但在我的情况下这不是问题.如何让这些反馈永久消失?

warnings runtime matplotlib

14
推荐指数
2
解决办法
1万
查看次数

关闭Matplotlib数字

我正在使用Matplotlib和MPLD3来创建可以在html plages中显示的图形(使用django).目前,我的图表是从csv文件中提取的数据动态生成的.我经常在终端收到这条消息:

运行时警告:已打开超过20个数字.通过pyplot接口(matplotlib.pyplot.figure)创建的数字将保留,直到明确关闭,并可能消耗太多内存.(要控制此警告,请参阅rcParam figure.max_num_figures).max_open_warning,RuntimeWarning)

我不确定它的意思,但我假设它意味着我应该有一些方法来关闭未使用的图形.无论如何要做到这一点还是完全偏离基地?谢谢.

python matplotlib

13
推荐指数
2
解决办法
2万
查看次数

Python plt:关闭或清晰的数字不起作用

我用我不显示但存储到硬盘驱动器的脚本生成了大量图形。过了一会儿,我收到了消息

/usr/lib/pymodules/python2.7/matplotlib/pyplot.py:412: RuntimeWarning: 打开了20多个图。通过 pyplot 接口 ( matplotlib.pyplot.figure)创建的图会保留直到明确关闭,并且可能会消耗太多内存。(要控制此警告,请参阅 rcParam figure.max_num_figures)。max_open_warning、运行时警告)

因此,我尝试在存储后关闭或清除数字。到目前为止,我尝试了以下所有方法,但没有一个有效。我仍然收到来自上面的消息。

plt.figure().clf()
plt.figure().clear()
plt.clf()
plt.close()
plt.close('all')
plt.close(plt.figure())
Run Code Online (Sandbox Code Playgroud)

此外,我试图通过以下方式限制开放数字的数量

plt.rcParams.update({'figure.max_num_figures':1})
Run Code Online (Sandbox Code Playgroud)

下面是一段与上述行为类似的示例代码。我在我尝试过的地方添加了我尝试过的不同选项作为评论。

from pandas import DataFrame
from numpy import random
df = DataFrame(random.randint(0,10,40))

import matplotlib.pyplot as plt
plt.ioff()
#plt.rcParams.update({'figure.max_num_figures':1})
for i in range(0,30):
    fig, ax = plt.subplots()
    ax.hist([df])
    plt.savefig("/home/userXYZ/Development/pic_test.png")
    #plt.figure().clf()
    #plt.figure().clear()
    #plt.clf()
    #plt.close() # results in an error
    #plt.close('all') # also error
    #plt.close(plt.figure()) # also error
Run Code Online (Sandbox Code Playgroud)

完整地说,这是我在使用时遇到的错误plt.close

无法调用“event”命令:在执行从“ttk::ThemeChanged”中调用的“event generate $w <>”(过程“ttk::ThemeChanged”第6行)时,应用程序已被破坏

python matplotlib python-2.7

5
推荐指数
1
解决办法
8322
查看次数