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
添加回答
举报