Julia Ploting:Push!()添加到错误的行 [英] Julia Plotting: push!() adds to wrong line
本文介绍了Julia Ploting:Push!()添加到错误的行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想在for循环中使用push!()
来继续两条单独的绘图线。请考虑以下示例:
using Plots; gr()
f = x->x*x
g = x->f(x)+.2*randn()
p = plot(-1:.1:0, f, ylim=(-1,2), c=:blue)
s = scatter!(-1:.1:0, g, c=:red)
anim = Animation()
for i=1:10
x = i/10
push!(p, x, f(x))
push!(s, x, g(x)) # without this, f gets continued as expected
frame(anim)
end
gif(anim, "test.gif", fps=2)
为什么push!(p, ...)
和push!(s,...)
都继续蓝线?
如何将散乱数据改为追加到s
?
我知道link的第二个绘图通过一次绘制并按下两条线获得了类似的结果,但该解决方案并不总是实用的,特别是在更复杂的绘图中。
推荐答案
在您的代码中,p
和s
是相同的对象。
表示p == s
将返回true
。
数据将存储在p.series_list
中。
您可以在p.series_list[1][:y]
中获取y轴数据,p.series_list[2][:y]
中获取散点图。
现在只需稍微修改一下原始代码!
首先,删除s
,仅使用p
。
其次,在push!()函数中,给出了第二个参数来指示我们想要追加新数据的数据索引。
f = x->x*x
g = x->f(x)+.2*randn()
p = plot(-1:.1:0, f, ylim=(-1,2), c=:blue)
scatter!(-1:.1:0, g, c=:red)
anim = Animation()
for i=1:10
x = i/10
push!(p, 1, x, f(x))
push!(p, 2, x, g(x))
frame(anim)
end
gif(anim, "test.gif", fps=2)
这篇关于Julia Ploting:Push!()添加到错误的行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文