Plots.jl: 循环内图
Plots.jl: plots inside for cycle
我正在使用 Plots.jl 和 GR 后端。
无论如何,我似乎无法策划!在 for 循环内:
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
奇怪的是,同样的事情不用循环也能奏效:
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
对象返回到控制台时,它隐式调用了 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
我正在使用 Plots.jl 和 GR 后端。
无论如何,我似乎无法策划!在 for 循环内:
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
奇怪的是,同样的事情不用循环也能奏效:
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
对象返回到控制台时,它隐式调用了 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