2012-11-04 31 views
34

通過我的Mac OSX機器上matplotlib的動畫例如散步 - http://matplotlib.org/examples/animation/simple_anim.html - 我收到此錯誤: -的Mac OSX - AttributeError的: 'FigureCanvasMac' 對象有沒有屬性 'restore_region'

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

+0

確認。剛剛嘗試過,連續發生同樣的錯誤。 – num3ric

回答

21

可以避開

import matplotlib 
matplotlib.use('TkAgg') 
+3

請注意,這要求必須安裝Tk(不一定滿足),並且這必須在'import matplotlib.pyplot as plt' – emunsing

47

只需設置

blit=False 
:通過切換到不同的後端問題

animation.FuncAnimation()被調用,它將工作。

例如(from double_pendulum_animated):

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

嘿@ jw1123之前,你怎麼知道設置blit = False?這對我有用,只是想明白爲什麼。謝謝。 – ingrid

+7

從http://jakevdp.github.io/blog/2012/08/18/matplotlib-animation-tutorial/, blit = True意味着只重新繪製已經改變的部分。而默認的OS X後端目前不支持這個功能(這也解釋了Beau的答案)。 –

+4

@ jw1123我<3你。 –

4

截至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 

這爲我使用的OSX 10.11.6,Python中的ActiveState Tkinter的安裝安裝Tkinter的工作2.71 基本的動畫實例仍然有點吵,直到blt = False,line_ani代碼在這裏:

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