如何抑制matplotlib警告?

时间:2015-11-18 23:24:52

标签: python pandas matplotlib warnings

我每次matplotlib时都会收到来自import pandas的警告:

/usr/local/lib/python2.7/site-packages/matplotlib/__init__.py:872: UserWarning: axes.color_cycle is deprecated and replaced with axes.prop_cycle; please use the latter.


 warnings.warn(self.msg_depr % (key, alt_key))

抑制它的最佳方法是什么?所有套餐都是最新的。

Conf: OSX与brew Python 2.7.10(默认,2015年7月13日,12:05:58),pandas == 0.17.0和matplotlib == 1.5.0

6 个答案:

答案 0 :(得分:19)

您可以取消所有警告:

import warnings
warnings.filterwarnings("ignore")

import pandas

答案 1 :(得分:7)

您可以按照AndreL的建议取消警告消息,也可以解决此特定问题并停止一劳永逸地收到警告消息。如果您想要后者,请执行以下操作。

打开您的matplotlibrc文件并搜索axes.color_cycle。如果您收到警告消息,则表示您的matplotlibrc文件应显示如下内容:

axes.color_cycle : b, g, r, c, m, y, k  # color cycle for plot lines

您应该用此替换该行:

axes.prop_cycle : cycler('color', ['b', 'g', 'r', 'c', 'm', 'y', 'k'])

警告信息应该消失。

答案 2 :(得分:5)

您还可以隐藏特定警告,而不是隐藏所有内容。 例如,如果我们只想隐藏 matplotlib 警告:

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

过滤器可以自定义到发出警告的文件的确切消息和行号,假设它只是一个让您烦恼的警告,而不是整个 matplotlib。有关详情,请参阅 https://docs.python.org/3/library/warnings.html

答案 3 :(得分:1)

您可以在适当的位置使用 prop_cycle 来取消警告UserWarning: axes.color_cycle is deprecated and replaced with axes.prop_cycle; please use the latter.

例如,在您使用过color_cycle的地方:

matplotlib.rcParams['axes.color_cycle'] = ['r', 'k', 'c']

将其替换为以下内容:

matplotlib.rcParams['axes.prop_cycle'] = mpl.cycler(color=["r", "k", "c"]) 

要进一步了解,请看下面的示例:

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

mpl.rcParams['axes.prop_cycle'] = mpl.cycler(color=["r", "k", "c"]) 

x = np.linspace(0, 20, 100)

fig, axes = plt.subplots(nrows=2)

for i in range(10):
    axes[0].plot(x, i * (x - 10)**2)

for i in range(10):
    axes[1].plot(x, i * np.cos(x))

plt.show()

enter image description here

答案 4 :(得分:0)

降级到之前稳定版本的matplotlib 1.4.3

答案 5 :(得分:0)

如果您正在使用日志记录模块,请尝试以下操作: logging.getLogger('matplotlib')。setLevel(level = logging.CRITICAL)