我想展示一个正在更新循环的每次迭代的图。
例如,假设我想显示随机游走。
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
随机游走只是一个例子,我真正想做的是监视长时间运行的进程的状态。
最佳答案
您缺少的是在绘制下一个图之前清除输出的功能。
这是IJulia.clear_output()
。
真正的技巧是它需要一个默认为 false 的 bool argument,
但如果将其设置为 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% 理想,因为在重绘之前清除输出会清除之前显示的所有其他内容。 但它通常足够方便。
关于plot - 如何在 JuPyTeR 中使用 Plots.jl 制作 "animated"更新图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46296761/