Лови предупреждение библиотек matplotlib

у меня есть код (приведен ниже как минимальный рабочий пример, MWE), который выдает предупреждение при построении цветовой полосы:

/usr/local/lib/python2.7/dist-packages/matplotlib/figure.py:1533: UserWarning: This figure includes Axes that are not compatible with tight_layout, so its results might be incorrect.
  warnings.warn("This figure includes Axes that are not "

Я хочу поймать это предупреждение, чтобы оно не отображалось.

Я знаю, что должен применить что-то в соответствии с тем, что указано в этом вопросе как поймать предупреждение numpy, как исключение (не только для тестирования)?, но я не уверен, как это сделать.

здесь MWE:

import matplotlib.pyplot as plt 
import numpy as np
import matplotlib.gridspec as gridspec

x = np.random.randn(60) 
y = np.random.randn(60)
z = [np.random.random() for _ in range(60)]

fig = plt.figure()
gs = gridspec.GridSpec(1, 2)

ax0 = plt.subplot(gs[0, 0])
plt.scatter(x, y, s=20)

ax1 = plt.subplot(gs[0, 1])
cm = plt.cm.get_cmap('RdYlBu_r')
plt.scatter(x, y, s=20 ,c=z, cmap=cm)
cbaxes = fig.add_axes([0.6, 0.12, 0.1, 0.02]) 
plt.colorbar(cax=cbaxes, ticks=[0.,1], orientation='horizontal')

fig.tight_layout()
plt.show()

2 ответов


вы, вероятно, не хотите, чтобы поймать это предупреждение в качестве исключения. Это прервет вызов функции.

использовать предупреждения стандартный библиотечный модуль для управления предупреждениями.

вы можете подавить предупреждение от вызов конкретной функции использование контекстного менеджера:

import warnings
with warnings.catch_warnings():
    warnings.simplefilter("ignore")
    fig.tight_layout()

игнорировать все предупреждения от matplotlib:

warnings.filterwarnings("ignore", module="matplotlib")

игнорировать только UserWarnings от библиотек matplotlib:

warnings.filterwarnings("ignore", category=UserWarning, module="matplotlib")

печать сообщений осуществляется путем вызова showwarning(), который может быть переопределен; реализация этой функции по умолчанию форматирует сообщение, вызывая formatwarning (), который также доступно для использования пользовательскими реализациями.

переопределить showwarning() метод ничего не делать, когда выдается предупреждение. Функция имеет сообщение и категорию предупреждения, доступные ей при вызове, поэтому вы можете проверить и скрыть только предупреждения от matplotlib.

источник:http://docs.python.org/2/library/warnings.html#warnings.showwarning