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

Я вошел в файл после вызова matplotlib непосредственно из python, чтобы посмотреть, какой файл rcparams мне следует исследовать, и вручную изменил 20 на 0. По-прежнему никаких изменений. В случае, если документация была неправильной, я также изменил ее на 1000, но все еще получаю те же предупреждающие сообщения.

Я понимаю, что это может быть проблемой для людей, работающих на компьютерах с ограниченным энергопотреблением, но в моем случае это не проблема. Как я могу навсегда удалить этот отзыв?


person Brassmonkey    schedule 15.12.2014    source источник
comment
Попробуйте это: stackoverflow.com/questions/ 21884271 /   -  person Aswin    schedule 06.01.2016
comment
Перед ключом словаря отсутствует только одна вступительная цитата, иначе это правильно!   -  person smcs    schedule 27.11.2020


Ответы (3)


Попробуйте установить это так:

import matplotlib as plt
plt.rcParams.update({'figure.max_open_warning': 0})

Не совсем уверен, почему это работает, но это отражает то, как я менял размер шрифта в прошлом, и, похоже, исправляет предупреждения для меня.

person robb    schedule 20.12.2015

Я просто попробовал другой способ, и он сработал:

import matplotlib as mpl
mpl.rc('figure', max_open_warning = 0)
person ipramusinto    schedule 27.04.2019

Ознакомьтесь с этой статьей: https://heitorpb.github.io/bla/2020/03/18/close-matplotlib-figures/

По сути, он говорит plt.close (fig1) после того, как вы закончите с fig1. Таким образом, у вас не будет слишком много фиг, плавающих в памяти.

person SeanSean    schedule 16.06.2021