AttributeError:“FigureCanvasInterAgg”对象没有属性“renderer”

问题描述 投票:0回答:4

我使用的是 Python 2.7,错误源自以下几行:

fig.canvas.draw()
img = np.array(fig.canvas.renderer._renderer)

我已经尝试了所有其他解决方案,从将后端更改为 WXAgg 或 GTKAgg 并显式包含 matplotlib.use("WXAgg") ,但它仍然不起作用。

我也在 Fedora 上运行。

有什么建议吗?谢谢

python-2.7 matplotlib pycharm
4个回答
5
投票

只需转到文件 -> 设置 -> 工具 -> Python Scientific 取消选中该项目即可。 祝你好运


4
投票

创建我的帐户只是为了回答您的问题。这是一个快速但肮脏的修复:

FigureCanvasAgg.draw(self)
插入到
FigureCanvasInterAgg(FigureCanvasAgg)
 中的类 
%PycharmInstallDir%\helpers\pycharm_matplotlib_backend\backend_interagg.py

的 draw() 方法

我将其插入到我使用的版本的第92行。虽然没有必要,但我建议在修改之前备份 backend_interagg.py 文件。 我系统上的文件是只读的,因此要修改它,您可能必须将其复制到其他地方,添加此行,然后将其复制回来并使用管理员权限覆盖。

正如 ImportanceOfBeingErnest 所说,这是一个 PyCharm 问题:辅助函数作者重写了FigureCanvasAgg 类的 draw() 方法,而没有维护其预期功能。


1
投票
plt.gcf().canvas.get_renderer()
fig.show()

它对我来说适用于 Qt5Agg 后端和 PyCharm IDE。


0
投票

或者只是这样:

 %matplotlib inline

如果您使用的是 Jupyter Notebook。 我不知道有多少次我忘记添加这一点了。 但在某些情况下,它会给出“渲染器”错误,而不是通常的不执行任何操作的结果。

© www.soinside.com 2019 - 2024. All rights reserved.