2017-09-10 18 views
0

私はGRバックエンドでPlots.jlを使用しています。Plots.jl:サイクル内のプロット

何でも、私はプロットすることができないようです!

using Plots 
fn(m,x) = m*x 
plot([0, 10], [fn(1, 0), fn(1, 10)]) 
for m in 2:4 
    plot!([0, 10], [fn(m, 0), fn(m, 10)]) 
end 
奇妙な

plot inside loop

、サイクルを使用せずに同じことを動作します:forループ内で自分自身をプロットしているため

using Plots 
fn(m,x) = m*x 
plot([0, 10], [fn(1, 0), fn(1, 10)]) 
plot!([0, 10], [fn(2, 0), fn(2, 10)]) 
plot!([0, 10], [fn(3, 0), fn(3, 10)]) 
plot!([0, 10], [fn(4, 0), fn(4, 10)]) 

plot without loop

答えて

2

は、いつ起こりますPlotオブジェクトがコンソールに返され、暗黙的にBase.display関数が呼び出されます。 Plotオブジェクトのdisplayメソッドは、表示されるプロットを生成します。 forサイクル内に生成されたオブジェクトは自動的にコンソールに戻されません。つまり、プロットは表示されません。しかし、あなたは明示的にdisplayを呼び出すことによって、それらを表示することができます

using Plots 
fn(m,x) = m*x 
plot([0, 10], [fn(1, 0), fn(1, 10)]) 
for m in 2:4 
    display(plot!([0, 10], [fn(m, 0), fn(m, 10)])) 
end 

または

p = plot([0, 10], [fn(1, 0), fn(1, 10)]) 
for m in 2:4 
    plot!(p, [0, 10], [fn(m, 0), fn(m, 10)]) 
end 
p 
関連する問題