matplotlib动画保存与预期不同的帧

时间:2019-07-30 07:59:05

标签: python matplotlib

matplotlib animation.save无法提供正确的帧和迭代。

当我使用Application.DoEvents()后端在Jupyter中运行代码时,我的绘图可以完美运行,并以所需的结束帧(n = 100)结束。但是,当我播放保存的mp4时,我以n = 99结尾。

我更改了public void Startup() { var context = SynchronizationContext.Current; _splashForm.Show(); Application.DoEvents(); ... SynchronizationContext.SetSynchronizationContext(context); Application.Run(_mainForm); } ,然后笔记本后端再次完美地以n = 100结尾,这意味着a.event_source.stop()被正确调用。但是,当我查看mp4时,它以n = 129结尾。

%matplotlib notebook

1 个答案:

答案 0 :(得分:1)

docs,如果frames设置为none,它将使用itertools.count(interval)作为要使用的帧数。之所以看到99而不是100,是因为它的索引为零。

您可以使用frames=n设置所需的帧数,并通过以下方法测试其正确性:

ffprobe -v error -select_streams v:0 -show_entries stream=nb_frames -of default=nokey=1:noprint_wrappers=1 norm_dist.mp4

不是吗,但是为了后代:

似乎a.event_source.stop()使函数短路。尝试将支票移到末尾,看看是否能给您所需的帧数。