Подтвердить что ты не робот

Mac OSX - AttributeError: объект 'FigureCanvasMac' не имеет атрибута 'restore_region'

Прогулка по примеру анимации matplotlib на моей машине Mac OSX - http://matplotlib.org/examples/animation/simple_anim.html - Я получаю эту ошибку: -

File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/animation.py", line 248, in _blit_clear
    a.figure.canvas.restore_region(bg_cache[a])
AttributeError: 'FigureCanvasMac' object has no attribute 'restore_region'

Кто-нибудь, кто столкнулся с этим, знает, как решить эту проблему?

Похоже, что это известная (и нерешенная на данный момент) проблема - https://github.com/matplotlib/matplotlib/issues/531

4b9b3361

Ответ 1

Просто установите

blit=False

когда вызывается анимация .FuncAnimation(), и она будет работать.

Например (из double_pendulum_animated):

ani = animation.FuncAnimation(fig, animate, np.arange(1, len(y)), interval=25, blit=False, init_func=init)

Ответ 2

Вы можете избежать проблемы, переключившись на другой бэкэнд:

import matplotlib
matplotlib.use('TkAgg')

Ответ 3

Как отмечено в https://mail.python.org/pipermail/pythonmac-sig/2012-September/023664.html, используйте:

import matplotlib
matplotlib.use('TkAgg')

#just *before*

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

Это сработало для меня с Tkinter, установленным с использованием установки ActiveState Tkinter на OSX 10.11.6, Python 2.71 Пример базовой анимации по-прежнему немного шумный, пока blt = False в коде line_ani здесь:

line_ani = animation.FuncAnimation(fig1, update_line, 25, fargs=(data, l),
interval=50, blit=False)