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
,但没有成功。谢谢