gpt4 book ai didi

python - MatPlotLib FuncAnimation 不适用于非零间隔或 blit=True

转载 作者:行者123 更新时间:2023-11-28 19:14:49 41 4
gpt4 key购买 nike

首先要对整个社区表示衷心的感谢,感谢你们,我学到了我所知道的大部分知识!

无论如何,我对 MatPlotLib 的动画模块有疑问。

我已将我的代码缩减到看起来有问题的地方。下面的代码有效:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

ionFig = plt.figure(figsize=(18.0, 12.5))
ionPlot = ionFig.add_subplot(111)
ionScatter = []
plots = {}
plots['pos'] = [ [[0,2,4, 0,2,4],[1,1,1, 1,1,1]] , [[5,6,8, 5,6,8],[1,4,3, 1,4,3]] ]
ionPlot.set_xlim(0,10)
ionPlot.set_ylim(0,10)

for particle in range(len(plots['pos'])):
ionScatter.append(ionPlot.scatter(plots['pos'][particle][0][0], plots['pos'][particle][1][0], s=6))

for scatter in ionScatter:
scatter.remove()

def animate(i, ionScatter, plots):
print i
for particle in range(len(plots['pos'])):
ionScatter[particle].set_offsets([plots['pos'][particle][0][i], plots['pos'][particle][1][i]])
return ionScatter


ani = animation.FuncAnimation(ionFig, animate, fargs=[ionScatter, plots], frames=len(plots['pos'][0][0]), interval=0, blit=True, repeat=True)
ionFig.show()

但我想将间隔设置为非零数字,以减慢动画速度。但是,当我将倒数第二行更改为:

ani = animation.FuncAnimation(ionFig, animate, fargs=[ionScatter, plots], frames=len(plots['pos'][0][0]), interval=100, blit=True, repeat=True)

该图显示一瞬间,然后关闭。

设置为

ani = animation.FuncAnimation(ionFig, animate, fargs=[ionScatter, plots], frames=len(plots['pos'][0][0]), interval=100, blit=True, repeat=True)

导致同样的错误,并且

ani = animation.FuncAnimation(ionFig, animate, fargs=[ionScatter, plots], frames=len(plots['pos'][0][0]), interval=0, blit=False, repeat=True)

使空白窗口出现而不消失。

在所有这些情况下,我都得到了打印出迭代号 i 的回调。在前两种情况下,它会这样做两次,但都是 0。在最后一种情况下,它确实循环通过,但正如我所说,窗口是空的。这种情况无论如何都不那么有趣,因为间隔回到了 0。

所以出于某种原因,非零间隔会弄乱我的动画,知道为什么会这样吗?我环顾四周,但似乎找不到太多东西。

不要想象它有什么不同,但我在 Ubuntu 14 上。

非常感谢!

最佳答案

所以我找到了一个解决方案,虽然我不知道它为什么有效。

似乎使用 plt.show() 而不是 ionFig.show() 允许使用间隔。我假设使用 ionFig.show() 是不够的,因为它不会告诉动画自己开始,所以如果这是一个人想要做的事情,可能需要另一条线?不太确定,如果有人知道请告诉我。

关于python - MatPlotLib FuncAnimation 不适用于非零间隔或 blit=True,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34983438/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com