Julia 朱莉娅-想让子情节动画更快

Julia 朱莉娅-想让子情节动画更快,julia,Julia,我发现有一些解决方案可以让动画运行得更快,方法与答案中的函数3和函数4相同 ... p[1][1][:z] = data p[2][1][:z] = data ... 但是这里我不想要共享的z轴,我不知道如何调整代码。我在子地块的文档中搜索解决方案,但没有找到有效的解决方案 工作正常但速度很慢的代码是 p1 = plot3d(1, xlim = (-5, 5), ylim = (-5, 5), zlim = (-5, 5), markersize = 2, seriestype = :scat

我发现有一些解决方案可以让动画运行得更快,方法与答案中的函数3和函数4相同

...
p[1][1][:z] = data
p[2][1][:z] = data
...
但是这里我不想要共享的z轴,我不知道如何调整代码。我在子地块的文档中搜索解决方案,但没有找到有效的解决方案

工作正常但速度很慢的代码是

p1 = plot3d(1, xlim = (-5, 5), ylim = (-5, 5), zlim = (-5, 5), markersize = 2, seriestype = :scatter, legend = false, aspect_ratio = 1)
p2 = histogram(randn(1), bins = 50, xlims = (0,7), ylims = (0, 20), legend = false)
p = plot(p1, p2, layout = (1,2), title = "Cluster Simulation")

anim = @animate for iter=1:Ncalc
    step!(sim)

    scatter!(p1, sim.pos[:,1], sim.pos[:,2], sim.pos[:,3], xticks = false, yticks = false, zticks = false)

    histogram!(p2, sim.rad[:], xticks = false, yticks = false)

    next!(prog)
end every Int(Ncalc/Nframes)
以下是不起作用的代码:

p1 = plot3d(1, xlim = (-5, 5), ylim = (-5, 5), zlim = (-5, 5), markersize = 2, seriestype = :scatter, legend = false, aspect_ratio = 1)
p2 = histogram(randn(1), bins = 50, xlims = (0,7), ylims = (0, 20), legend = false)
p = plot(p1, p2, layout = (1,2), title = "Cluster Simulation")

anim = @animate for iter=1:Ncalc
    step!(sim)

    p[1] = sim.pos[:,1], sim.pos[:,2], sim.pos[:,3]

    p[2] = sim.rad[:]

    next!(prog)
end every Int(Ncalc/Nframes)
我得到的错误如下:

ERROR: MethodError: no method matching setindex!(::Plots.Plot{Plots.GRBackend}, ::Array{Float64,1}, ::Int64)
我在哪里错过了什么


提前感谢

错误告诉您不能将
p[1]
的值设置为
Float64
s的向量。这是因为
p[1]
是一个绘图对象,而不仅仅是
(x,y,z)
数据元组。您需要将数据分配给第一个(仅)数据系列的
:x
:y
:z
字段。没有你的数据我无法测试,但我认为你想这样做

p[1][1][:x] = sim.pos[:,1] # p[1][1] == p1[1] is the series
p[1][1][:y] = sim.pos[:,2] # so p[1][1][:x] is the x data, and so on...
p[1][1][:z] = sim.pos[:,3]
对于
p1

对于
p2
,您需要做更多的工作来获取直方图数据并“手动”更新条形图(我想是通过StatsBase.jl)。不知道如何最好地做到这一点,但也许其他部分已经足够加快动画的创建速度了