AttributeError:'FigureCanvasInterAgg'对象没有属性'renderer'

时间:2018-07-06 16:07:20

标签: python-2.7 matplotlib pycharm

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

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

我尝试了所有其他解决方案,包括将后端更改为WXAgg或GTKAgg,并明确包含matplotlib.use(“ WXAgg”),但仍然无法正常工作。

我也在Fedora上运行。

有什么建议吗?谢谢

2 个答案:

答案 0 :(得分:1)

设为我的帐户只是为了回答您的问题。这是一个快速而肮脏的修复程序:

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

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

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

答案 1 :(得分:0)

plt.gcf().canvas.get_renderer()
fig.show()

它与Qt5Agg后端和PyCharm IDE配合使用。