我想展示一个更新循环每次迭代的情节。
例如说我想要随机散步。
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
我知道IJulia.display
是迫使情节现在显示的功能,
(如果它是最终表达式,而不是自动显示)。
但这只给了我100个情节。 他们没有更新。
我不想要一个真正的动画,只是一个更新的情节。
所以我不认为Plots animate!
stuff is relevant
随机游走只是一个例子,我真正想做的是监视长时间运行过程的状态。
答案 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%理想,因为在重绘之前清除输出会清除之前显示的所有内容。 但它通常很方便。