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
答案 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()
使函数短路。尝试将支票移到末尾,看看是否能给您所需的帧数。