Julia Ploting:Push!()添加到错误的行 [英] Julia Plotting: push!() adds to wrong line

查看:32
本文介绍了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的第二个绘图通过一次绘制并按下两条线获得了类似的结果,但该解决方案并不总是实用的,特别是在更复杂的绘图中。

推荐答案

在您的代码中,ps是相同的对象。
表示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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆