【问题标题】:Disable MatPlotLib warning when using pyplot.imshow使用 pyplot.imshow 时禁用 MatPlotLib 警告
【发布时间】:2019-07-17 19:13:09
【问题描述】:

第一次来!当我使用 pyplot.imshow 函数时,我收到以下警告:

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

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

import warnings
warnings.filterwarnings('ignore')

它应该关闭所有警告,但由于某种原因,它对这个特定的警告没有帮助。

如果这是重复的,请告诉我。谢谢。

【问题讨论】:

  • 你试过with warnings.catch_warnings()吗?
  • 我不完全确定如何使用它。可以举个例子吗?
  • 我建议摆脱警告的原因,而不是警告本身。 Matplotlib 无论如何都会剪辑数据。因此,显而易见的解决方案是预先裁剪数据。
  • 是的,摆脱原因绝对是一个明智的做法。但是,我仍然想知道如何处理警告本身。

标签: matplotlib


【解决方案1】:

试试这个:

import warnings

# do all your preprocessing here...

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

# do everything immediately after here...

我不确定这是否可行(我会喜欢它作为评论,但你不能在 cmets 中做代码块)

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

新解决方案:

import logging

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

# plotting code here

logger.setLevel(old_level)

【讨论】:

  • 感谢您提供详细信息,但它不起作用。是不是该消息实际上并未归类为警告?
  • @hehe_ty_men 我浏览了源代码,找到了消息的实际生成位置;是的,这不是警告,而是日志消息。已编辑我的答案。
  • 嗯,有道理。试了代码,成功了。非常感谢!
  • 没问题;如果有效,请接受我的回答! @hehe_ty_men
猜你喜欢
  • 2019-03-23
  • 1970-01-01
  • 1970-01-01
  • 2018-10-06
  • 2020-11-18
  • 2012-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多