我已經創造了一些動畫後就正常了 - 儘管 - 緩凝時關鍵字:matplotlib動畫塊傳輸=真正原因KeyError異常
blit=False
然而,在我的努力通過設定塊傳輸,以加快動畫=真我在運行我的測試時遇到了一些奇怪的KeyError異常。
最後,我有一個預感,它可能不會有一個編碼錯誤,但也許有一個設置,甚至一個錯誤。
因此我從here導入了simple_anim.py腳本,發現發生了同樣的錯誤。
我測試過一些例子,他們都給出了相同的異常.... :(
任何人可以幫助我,並給上發生了什麼事情的一些信息?
的代碼是以下:
"""
A simple example of an animated plot
"""
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
fig, ax = plt.subplots()
x = np.arange(0, 2*np.pi, 0.01)
line, = ax.plot(x, np.sin(x))
def animate(i):
line.set_ydata(np.sin(x + i/10.0)) # update the data
return line,
# Init only required for blitting to give a clean slate.
def init():
line.set_ydata(np.ma.array(x, mask=True))
return line,
ani = animation.FuncAnimation(fig, animate, np.arange(1, 200), init_func=init,
interval=25, blit=True)
plt.show()
凸起的例外是:
Traceback (most recent call last):
File "/home/dj754/anaconda3/lib/python3.5/site-packages/matplotlib/backend_bases.py", line 1305, in _on_timer
ret = func(*args, **kwargs)
File "/home/dj754/anaconda3/lib/python3.5/site-packages/matplotlib/animation.py", line 1021, in _step
still_going = Animation._step(self, *args)
File "/home/dj754/anaconda3/lib/python3.5/site-packages/matplotlib/animation.py", line 827, in _step
self._draw_next_frame(framedata, self._blit)
File "/home/dj754/anaconda3/lib/python3.5/site-packages/matplotlib/animation.py", line 845, in _draw_next_frame
self._pre_draw(framedata, blit)
File "/home/dj754/anaconda3/lib/python3.5/site-packages/matplotlib/animation.py", line 858, in _pre_draw
self._blit_clear(self._drawn_artists, self._blit_cache)
File "/home/dj754/anaconda3/lib/python3.5/site-packages/matplotlib/animation.py", line 898, in _blit_clear
a.figure.canvas.restore_region(bg_cache[a])
KeyError: <matplotlib.axes._subplots.AxesSubplot object at 0x7fb3b9d3a198>
我只有'interval'低於'60'的問題 - 我的錯誤表明問題始於用於顯示窗口的Tkinter。當然,程序啓動兩個線程(或者更確切的說,使用Tkinter'after()'後周期性地執行'animate()',一些元素的啓動速度會比其他元素快,然後是第一個元素所需的其他元素 – furas
當我在家運行這個代碼時 - 認爲是 - 相同的軟件配置:一切正常但是... 我已經能夠重新創建相同的KeyError的東西,當我插入一個'plt.show()'語句之前創建動畫與'FuncAnimation ....)'電話 ...我有一種感覺,我正在進行一些事情。 –
..經過一番進一步的調查,我發現在代碼的開頭添加'plt.ion()'語句會導致它給出這個'KeyError'異常,**只有當'blit = True'被設置。當我將其更改爲'blit = False'時,它仍然工作。 不幸的是,我無法在工作中測試我的代碼(根據我提出的這個問題),但我很快就會做到這一點。 –