如何抑制Matplotlib警告?

37

每次我导入pandas时,都会从matplotlib获得一个警告:

/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))

最好的抑制方法是什么?所有软件包均已更新。

配置信息:使用brew安装的Python 2.7.10(默认为Jul 13 2015, 12:05:58),pandas版本为0.17.0,matplotlib版本为1.5.0


你的Linux操作系统名称和版本是什么?Python版本是多少?Matplotlib版本是多少?Pandas版本是多少? - dopstar
也许可以尝试类似于这样的方法?我无法测试它,因为我没有收到相同的警告。 - Bart
我使用的是OSX操作系统,带有brew Python 2.7.10(默认版本, Jul 13 2015, 12:05:58),并且还安装了pandas==0.17.0和matplotlib==1.5.0。 - nuin
请查看https://dev59.com/I3HYa4cB1Zd3GeqPJ0wg:它建议使用`matplotlib.use(arg, warn=False, force=False)`。请参阅http://matplotlib.org/api/matplotlib_configuration_api.html 首先从matplotlib导入use,然后调用matplotlib.use(),最后从matplotlib导入*。 - francis
5个回答

62

您可以抑制所有警告:

import warnings
warnings.filterwarnings("ignore")

import pandas

它对我有效,但它在脚本中会持续多久?如果我们升级到MPL3.3,这样做可以吗? - Azam

18

不要隐藏所有内容,你也可以只隐藏 特定的 警告。 例如,如果我们只想隐藏 matplotlib 的警告:

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

过滤器可以根据警告起源文件的确切消息和行号进行定制,比如说如果只有一个警告让您感到烦恼,而不是整个 matplotlib ,那么它就可以被定制。更多细节请参阅https://docs.python.org/3/library/warnings.html


1
你能否添加一个忽略特定matplotlib警告的示例? - M.T
2
我尝试过这个方法后仍然收到matplotlib弃用警告。 - sh37211
对我没有起作用。 - Sahar Millis
1
\..* 是做什么的?文档没有具体说明。 - Gerald
1
@Gerald 更新完成 - c z
1
@Gerald 更新完成 - undefined

9
你可以按照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'])

警告消息应该消失了。


1
您可以通过在适当的位置使用prop_cycle来抑制警告UserWarning: axes.color_cycle已被弃用并替换为axes.prop_cycle; 请使用后者。。例如,在您使用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


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接