2017-09-19 8 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 

最終出力:私はIJulia.display知る random walk plot

は、 (それは最終的な式である場合、それは自動的にdiplayedされるのではなく)が表示されるプロットを強制する機能です。

しかし、これは私に100のプロットを与えます。 更新中ではありません。

私は本当のアニメーションを望んでいません。プロットを更新するだけです。 だから私は考えていませんPlots animate! stuff is relevant ランダムウォークは単なる例です。私が本当にやりたいことは、長時間実行されているプロセスの状態を監視することです。

答えて

2

あなたが欠けているのは、次のプロットを行う前に出力をクリアする機能です。

これはIJulia.clear_output()です。 そして本当におもしろいのは、デフォルト値が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%理想的ではありません。 しかし、しばしば十分に便利です。

関連する問題