亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當我將 repeat = True 作為參數時,為什么 FuncAnimation 不重復?

當我將 repeat = True 作為參數時,為什么 FuncAnimation 不重復?

慕尼黑5688855 2023-03-16 17:41:04
import matplotlib.image as mpimgimport numpy as npimport matplotlib.pyplot as pltimport matplotlib.animation as animationfrom matplotlib.widgets import Buttonfrom matplotlib.widgets import Sliderfig = plt.figure()image_list =  ['downloads/20120831_194836_aia.lev1_euv_12s_4k.jpg', 'downloads/20120831_194936_aia.lev1_euv_12s_4k.jpg', 'downloads/20120831_195036_aia.lev1_euv_12s_4k.jpg']list = []for raw_image in image_list:    image1 = mpimg.imread(raw_image)    real_image1 = plt.imshow(image1)    list.append([real_image1])def update_plot(t):    print(t)    return list[t]anim = animation.FuncAnimation(fig, update_plot, repeat = True, interval=1, blit=False,                                repeat_delay=200)plt.show()我正在嘗試使用列表中的 3 個 jpg 圖像創建一個 func 動畫。程序運行 3 個圖像 1 次后,出現錯誤。當我打印“打印”時,它永遠不會重置為 0。錯誤:Traceback (most recent call last):  File "/Users/jamisenma/opt/anaconda3/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 1194, in _on_timer    ret = func(*args, **kwargs)  File "/Users/jamisenma/opt/anaconda3/lib/python3.7/site-packages/matplotlib/animation.py", line 1447, in _step    still_going = Animation._step(self, *args)  File "/Users/jamisenma/opt/anaconda3/lib/python3.7/site-packages/matplotlib/animation.py", line 1173, in _step    self._draw_next_frame(framedata, self._blit)  File "/Users/jamisenma/opt/anaconda3/lib/python3.7/site-packages/matplotlib/animation.py", line 1192, in _draw_next_frame    self._draw_frame(framedata)  File "/Users/jamisenma/opt/anaconda3/lib/python3.7/site-packages/matplotlib/animation.py", line 1755, in _draw_frame    self._drawn_artists = self._func(framedata, *self._args)  File "/Users/jamisenma/Library/Application Support/JetBrains/PyCharmCE2020.1/scratches/scratch_59.py", line 19, in update_plot    return list[t]IndexError: list index out of range有誰知道問題是什么?
查看完整描述

2 回答

?
慕森卡

TA貢獻1806條經驗 獲得超8個贊

解決了。我不得不添加frames = len(list)作為參數FuncAnimation



查看完整回答
反對 回復 2023-03-16
?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

您未能提供預期的MRE,也沒有進行預期的初始調試工作。因此,我不能確定。


但是,我最大的懷疑是來自的返回update_plot,它使用了一個您未能向我們展示的參數——并將其用作隱藏預定義類型的全局序列的下標。


嘗試使用這種簡單的技術進行調試:


def update_plot(t):

    print("ENTER update_plot; t =", t, "\n list =", list)

    print(t)

    return list[t]

我希望,就在您失敗之前,您會看到這一點t >= len(list)。


一般提示:不要為變量提供與內置或預定義名稱相同的名稱。特別是,改變list.


查看完整回答
反對 回復 2023-03-16
  • 2 回答
  • 0 關注
  • 155 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號