2017-09-19 49 views
2

我想显示一个更新循环的每个迭代的图。如何在JuPyTeR中使用Plots.jl制作“动画”更新图?

例如说我想展示随机散步。

using Plots 
using IJulia 

walk = [0.0] 
for ii in 1:100 
    step = 2rand() - 1.0 
    push!(walk, walk[end]+step) 
    plot(1:length(walk), walk) |> IJulia.display 
    sleep(0.2) #For demo purposes 
end 

最终输出: random walk plot

我知道IJulia.display现在是要显示给力剧情的功能, (而不是它是自动diplayed如果是最后一个表达式)。

但这只给了我100个地块。 他们没有更新。

我不想要一个真正的动画,只是一个更新的情节。 所以我不认为Plots animate! stuff is relevant 随机游走只是一个例子,我真正想做的是监视长时间运行的进程的状态。

回答

2

你缺少的是清除输出之前,你应该你的下一个情节的功能。

这是IJulia.clear_output()。 而真正的诀窍是它需要一个bool arguemnt默认为false,但如果将它设置为true,则会导致清除延迟,直到产生下一个输出为止。 这将停止fliggering。

所以与你的代码变成:

walk = [0.0] 
for ii in 1:100 
    step = 2rand()-1.0 
    push!(walk, walk[end]+step) 
    IJulia.clear_output(true) #Passing true says to wait until new ouput before clearing, this prevents flickering 
    plot(1:length(walk), walk) |> IJulia.display 
    sleep(0.2) 

end 

这不是100%完美,因为你重绘将清除一切你之前显示之前清除输出。 但它通常足够方便。