1 回答

TA貢獻1828條經驗 獲得超4個贊
我相信您正在 Jupyter 筆記本中運行您的代碼。%matplotlib notebook
在這種情況下,您應該在代碼的開頭添加。
中找到的代碼,以查看它是否適合您。
編輯
我在筆記本中實現了你的部分代碼。由于我不知道self.percentages
、self.window_size
和是什么self.get_distributions
以及self.bucket_length
它們有哪些值,為了簡單起見,我設置了labels = ['a', 'b', 'c']
和trimmed_dist = [3*i, 2*i, i**2]
,以便運行一個簡單的動畫。
這是我的代碼:
%matplotlib notebook
from matplotlib.animation import FuncAnimation
import matplotlib.pyplot as plt
def animation_frame(i):
? ? plt.gca().cla()
? ??
? ? labels = ['a', 'b', 'c']
? ? trimmed_dist = [3*i, 2*i, i**2]
? ? label_no = len(trimmed_dist)
? ??
? ? colors = plt.cm.Dark2(range(label_no))
? ? plt.xticks(rotation=90)
? ? plt.bar(x=labels, height=trimmed_dist, color=colors)
? ? plt.title(f'i = {i}') # this replaces print(i)
? ? plt.ylim([0, 100])? ? # only for clarity purpose
fig = plt.figure()
frames_no = 877
print('frames_no:', frames_no)
animation = FuncAnimation(fig, animation_frame, frames=frames_no, interval=1000)
這就是結果。
我添加plt.gca().cla()
是為了在每次迭代時擦除前一幀。print(i)
聲明對我也不起作用,所以我將其替換plt.title(f'i = {i}')
為 order 以便寫i
在標題中。相反,print('frames_no:', frames_no)
工作正常。
如您所見,我的動畫運行了,所以請嘗試實現我對您的代碼所做的更改。
如果動畫仍然不運行,請嘗試檢查self.percentages
、self.window_size
和self.get_distributions
的self.bucket_length
值和類型,以確保正確計算labels
和。trimmed_dist
添加回答
舉報