解决 PyCharm 2024.1+ matplotlib 图表显示异常:Plots 工具窗口空白 / tostring_rgb 报错

解决 PyCharm 2024.1+ matplotlib 图表显示异常:Plots 工具窗口空白 / tostring_rgb 报错

问题现象

PyCharm 2024.1.x Professional 中运行 matplotlib 绑图脚本时,出现以下报错:

复制代码
AttributeError: 'FigureCanvasInterAgg' object has no attribute 'tostring_rgb'. 
Did you mean: 'tostring_argb'?

同时 PyCharm 右侧的 Plots 工具窗口不显示,或显示空白/花屏。

根本原因

PyCharm 2024.1.x 自带的 matplotlib 后端文件:

复制代码
<PyCharm安装目录>/plugins/python/helpers/pycharm_matplotlib_backend/backend_interagg.py

该文件第 85 行调用了 self.tostring_rgb(),这是 matplotlib 的旧版 API

matplotlib 3.9 开始,tostring_rgb() 被移除,官方推荐使用 buffer_rgba()。但 PyCharm 2024.1.7 在发布时没有同步更新这个后端文件,导致新版本 matplotlib 与 PyCharm 内置后端不兼容。

这不是用户配置问题,而是 PyCharm 的 bug------它的辅助文件没有跟上 matplotlib 的 API 变更。

解决方案

方法一:修改 PyCharm 后端文件(推荐)

找到你 PyCharm 安装目录下的 backend_interagg.py 文件:

复制代码
Windows:
  D:\...\PyCharm 2024.x.x\plugins\python\helpers\pycharm_matplotlib_backend\backend_interagg.py

macOS:
  /Applications/PyCharm.app/Contents/plugins/python/helpers/pycharm_matplotlib_backend/backend_interagg.py

Linux:
  ~/.local/share/JetBrains/Toolbox/apps/PyCharm/ch-0/xxx/plugins/python/helpers/pycharm_matplotlib_backend/backend_interagg.py
第一步:在文件顶部添加 import
python 复制代码
import numpy as np
第二步:找到第 85 行左右的 show 方法

将原来的:

python 复制代码
buffer = self.tostring_rgb()

替换为:

python 复制代码
buffer = np.frombuffer(self.buffer_rgba(), dtype=np.uint8).reshape(-1, 4)[:, :3].tobytes()

保存文件,重启 PyCharm 即可。

为什么这样改?
原方法 说明
self.tostring_rgb() matplotlib 旧 API,返回 RGB 字节,3.9 后已删除
self.buffer_rgba() 新 API,返回 RGBA 字节(4 通道)
np.frombuffer(...).reshape(-1, 4)[:, :3] 将 RGBA(4 通道)转为 RGB(3 通道),兼容 PyCharm 原有的图像解析逻辑

方法二:禁用 PyCharm 交互模式(临时方案)

Settings → 工具 → Python 图 → 取消勾选"使用交互模式"

这样 PyCharm 不会拦截 matplotlib 的输出,plt.show() 会以独立窗口弹出。但 Plots 工具窗口将无法使用。

验证修复

创建一个测试脚本:

python 复制代码
import matplotlib.pyplot as plt

plt.plot([1, 2, 3], [1, 4, 9])
plt.show()

运行后确认:

  • 右侧 Plots 工具窗口正常显示图表
  • 图表内容清晰,无花屏/重叠
  • 运行结束退出码为 0

注意事项

  • PyCharm 升级版本后需要重新检查此文件,新版本可能已修复
  • 此方法不影响项目中使用的 matplotlib 版本,无需降级
  • 修改的是 PyCharm 的插件文件,不是项目代码

适用环境

项目 版本
PyCharm 2024.1.x Professional
matplotlib >= 3.9
Python 3.x
OS Windows / macOS / Linux
相关推荐
zzzzzz3105 天前
当产品经理说这个很简单:我用Python自动化处理奇葩需求的实战指南
python·pycharm·产品经理
摇滚侠12 天前
IDEA 创建 Java 项目 手动整合 SSM 框架
java·ide·intellij-idea
霸道流氓气质12 天前
Trae IDE 新手入门指南
ide
爱就是恒久忍耐12 天前
VSCode里如何比较2个branch
ide·vscode·编辑器
你是个什么橙12 天前
Python入门学习1:安装配置开发环境——Python或Annaconda,Pycharm
python·学习·pycharm
bloglin9999912 天前
vscode中可视化的合并分支,在“合并编辑器中解析”中“与基线进行比较”是什么意思
ide·vscode·编辑器
终将老去的穷苦程序员12 天前
IntelliJ IDEA 的安装教程
java·ide·intellij-idea
m沐沐12 天前
【计算机视觉】OpenCV 模板匹配银行卡数字识别---下
人工智能·python·opencv·计算机视觉·pycharm·numpy
春日见13 天前
vscode的AI编程插件推荐:
大数据·ide·vscode·算法·机器学习·编辑器·ai编程
lazy H13 天前
Spring Boot 项目如何连接 Redis?新手入门配置和常见错误总结
ide·spring boot·redis·后端·学习·intellij-idea