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