错误信息

/Users/zzs/develop/projects/machine-learning/base/practice/linear_model_practice.py:41: MatplotlibDeprecationWarning: Support for FigureCanvases without a required_interactive_framework attribute was deprecated in Matplotlib 3.6 and will be removed two minor releases later.
d2l.plt.scatter(features[:, (1)].detach().numpy(), labels.detach().numpy(), 1)

错误警告是 MatplotlibDeprecationWarning,提示在 matplotlib 3.6 版本开始,FigureCanvases 对象在没有 required_interactive_framework 属性时将被弃用。这是一个弃用警告,表示某些功能将在未来版本中被移除或更改,不一定会引起当前代码的故障。

解决方案:

可以尝试以下几种方法来解决或规避该警告:

确保 matplotlib 已更新

尽量使用最新版本的 matplotlib,因为修复和优化可能已经包含在最新版本中。

pip install --upgrade matplotlib

使用支持的交互式框架:

确保你当前的 IDE 配置以及环境支持 matplotlib 的交互式模式。例如,如果你使用的是 Jupyter Notebook,可以启用 %matplotlib inline 进行图形显示。

配置 matplotlib 的后端:

可以尝试手动设置 matplotlib 的后端为 agg 等非交互式后端,这样渲染方式可能会减少警告的出现。

import matplotlib
matplotlib.use('agg')  # 或其他后端,如 'TkAgg', 'Qt5Agg' 等

from d2l import torch as d2l
# 你的其余代码

忽略特定警告:

在 Python 中,你可以选择忽略特定的警告,如果你确信这不会影响你的程序功能。以下代码片段展示了如何忽略该类型的警告。

import warnings
warnings.filterwarnings("ignore", category=MatplotlibDeprecationWarning)

import numpy as np
import torch
from d2l import torch as d2l

# 你的代码
d2l.set_figsize()
d2l.plt.scatter(features[:, (1)].detach().numpy(), labels.detach().numpy(), 1)
d2l.plt.show()

调试模式:

确保你的 IDEA(JetBrains IntelliJ IDEA)中 Python 插件配置正确,尤其是对于 matplotlib 使用的后台绘图库是否已配置且兼容。

参考代码(综合):

import warnings
warnings.filterwarnings("ignore", category=MatplotlibDeprecationWarning)

import matplotlib
matplotlib.use('agg')  # 设置为非交互式后端

import numpy as np
import torch
from d2l import torch as d2l

# 生成数据
features = torch.randn(100, 2)
labels = torch.sum(features, dim=1)

# 设置图像大小并绘制散点图
d2l.set_figsize()
d2l.plt.scatter(features[:, 1].detach().numpy(), labels.detach().numpy(), 1)
d2l.plt.show()

通过这些方法,你应该能够解决或规避 MatplotlibDeprecationWarning 警告。



matplotlib在IDEA中绘制图形错误插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:http://choupangxia.com/2024/10/05/matplotlib-in-idea/