2

我想展示一个更新循环每次迭代的图。

例如说我想展示一个随机游走。

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!东西是相关 的随机游走只是一个例子,我真正想做的是监控一个长时间运行的进程的状态。

4

1 回答 1

2

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

这是IJulia.clear_output(). 真正的诀窍是它需要一个默认为 false 的 bool argumentmnt,但如果将其设置为 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% 理想的,因为在重绘之前清除输出会清除之前显示的所有其他内容。但它通常足够方便。

于 2017-09-19T09:28:42.287 回答