如何在JuPyTeR中使用Plots.jl制作“动画”更新图?

时间:2017-09-19 09:28:42

标签: plot julia jupyter-notebook 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是迫使情节现在显示的功能, (如果它是最终表达式,而不是自动显示)。

但这只给了我100个情节。 他们没有更新。

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

1 个答案:

答案 0 :(得分:2)

您缺少的是在下一个绘图之前清除输出的功能。

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

因此,您的代码变为:

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%理想,因为在重绘之前清除输出会清除之前显示的所有内容。 但它通常很方便。