使用pyplot.imshow时禁用MatPlotLib警告

使用pyplot.imshow时禁用MatPlotLib警告,matplotlib,Matplotlib,第一次来这里!使用pyplot.imshow功能时,我收到以下警告: “使用RGB数据将输入数据剪裁到imshow的有效范围([0..1]表示浮点数,[0..255]表示整数)。” 根据我的数据,我知道这完全是一种预期行为。如何关闭此警告?我试过了 import warnings warnings.filterwarnings('ignore') 它应该关闭所有警告,但由于某些原因,它对此特定警告没有帮助 请让我知道这是否是重复的。谢谢。试试这个: import warnings # do

第一次来这里!使用pyplot.imshow功能时,我收到以下警告:

“使用RGB数据将输入数据剪裁到imshow的有效范围([0..1]表示浮点数,[0..255]表示整数)。”

根据我的数据,我知道这完全是一种预期行为。如何关闭此警告?我试过了

import warnings
warnings.filterwarnings('ignore')
它应该关闭所有警告,但由于某些原因,它对此特定警告没有帮助

请让我知道这是否是重复的。谢谢。

试试这个:

import warnings

# do all your preprocessing here...

with warnings.catch_warnings():
    # ...do only the stuff that causes warnings here...

# do everything immediately after here...
我不确定这是否有效(我希望它作为注释,但您不能在注释中执行代码块)

编辑:在浏览了
matplotlib
代码之后,我认为上述方法不起作用的原因是,它实际上不是警告,而是日志消息。因此,要使用的正确接口是
日志记录
接口

新解决方案:

import logging

logger = logging.getLogger()
old_level = logger.level
logger.setLevel(100)

# plotting code here

logger.setLevel(old_level)

您是否尝试过使用警告。catch_warnings()?我不完全确定如何使用它。你能给我举个例子吗?我建议你不要用警告本身,而要去掉警告的原因。Matplotlib将以任何方式剪裁数据。因此,最明显的解决办法是在动手之前先截取数据。是的,消除原因绝对是一种明智的方法。不过,我还是想知道如何处理警告本身。谢谢你提供的详细信息,但它没有起作用。是不是这条消息实际上没有被归类为警告?@heheu_ty_men我浏览了源代码,找到了消息的实际生成位置;是的,这不是警告,而是日志消息。编辑了我的答案。啊,这是有道理的。我试过密码,成功了。非常感谢你!没问题;如果我的回答有效,请接受@呵呵