Julia 如何在Plots.jl中设置更改直方图的动画?

Julia 如何在Plots.jl中设置更改直方图的动画?,julia,Julia,我从一开始就工作,失败得很惨 # initialize the attractor n = 1500 dt = 0.02 σ, ρ, β = 10., 28., 8/3 x, y, z = 1., 1., 1. # initialize a 3D plot with 1 empty series plt = path3d(1, xlim=(-25,25), ylim=(-25,25), zlim=(0,50), xlab = "x", ylab = "y", z

我从一开始就工作,失败得很惨

# initialize the attractor
n = 1500
dt = 0.02
σ, ρ, β = 10., 28., 8/3
x, y, z = 1., 1., 1.

# initialize a 3D plot with 1 empty series
plt = path3d(1, xlim=(-25,25), ylim=(-25,25), zlim=(0,50),
                xlab = "x", ylab = "y", zlab = "z",
                title = "Lorenz Attractor", marker = 1)

# build an animated gif, saving every 10th frame
@gif for i=1:n
    dx = σ*(y - x)     ; x += dt * dx
    dy = x*(ρ - z) - y ; y += dt * dy
    dz = x*y - β*z     ; z += dt * dz
    push!(plt, x, y, z)
end every 10
我有一些模拟,我想经常计算并绘制一个直方图,然后为所有这些直方图设置动画。这是迄今为止我所拥有的玩具示例:

using Distributions
using Plots
Plots.gr()

p = rand(Normal(0,1), 10000)
myplot = Plots. histogram(p)
savefig("initial.png")

anim = @animate for i=1:10
    p = rand(Normal(0,1), 10000)
    push!(myplot, Plots.histogram(p))
end

gif(anim, "mygif.gif", fps = 1)
正如你可能知道的,我并不真正了解@animate是如何工作的,我只是在猜测这里的语法。我知道我可以保存一些PNG,然后再制作动画,但我想用这种方式试试

anim = @animate for i=1:10
    p = rand(Normal(0,1), 10000)
    histogram(p)
end

gif(anim, "mygif.gif", fps = 1)

应该有用。

你一遍又一遍地重复相同的直方图-这不会产生动画。相反,只需在循环内部调用直方图(rnorm(10000))。文档和其中的链接对此进行了很好的解释。@MichaelK.Borregaardfixed@MichaelK.BorregaardOMG我使用的是
Plots.histogram()
而不是
histogram()
。它起作用了!我猜整个
这件事是不必要的。谢谢,当然可以。我认为用@gif和/或@animate做一个简单的例子会很有帮助……就我而言,我不理解推和/或
绘图。我看到基本上是这样的——也许只需扩展
anim=@animate for I=1:100 plot(…)end gif(anim,“/tmp/anim_fps15.gif”,fps=15)
,作为一个完整的工作示例。我猜看文档的人的知识水平很不一样,我可能是处于低端。。。。再次感谢你的帮助。如果可以的话,我还有一个问题要问。我有一个模拟,我想每隔
t
时间单位构建一个直方图。如果我用I=1:N的
anim=@animate(其中N较大)启动主模拟循环,然后我尝试将
直方图()
放在
的内部,如果I%100==0
条件,则它不起作用(
错误:LoadError:没有当前绘图/子绘图
)。我找到了一个解决方法,即执行所有模拟代码,然后如果
I%100
不是零,则继续
continue
,然后将
histogram()?谢谢。我想最好的办法是每100次
向循环中追加一次
(在
结束
同一行之后)回答得好。我们可以做
anim=@animate…
并用
gif(anim,“gif.gif”,fps=1)保存它。保存由
@gif
创建的动画的方法是什么?我试着简单地用
@gif
替换
@animate
,但没有成功。谢谢