gpt4 book ai didi

animation - 在 Julia 中删除以前的数据/图(Plots.jl,GR 后端)

转载 作者:行者123 更新时间:2023-12-01 12:05:23 25 4
gpt4 key购买 nike

我已经在 J​​ulia 中解决了描述粒子运动的 ODE,并将坐标和各自的时间保存在一个数组中。我想创建一个带有粒子沿求解轨迹的绘图的动画 gif 图像,但要做到这一点(我提出的唯一方法)是使用 scatter 绘制粒子的位置,并每时每刻删除粒子的先前位置。不过我只知道scatter!这将向绘图中添加更多粒子,而不是显示粒子位置的变化。那么我怎样才能在每次迭代时删除以前的图,或者有更聪明的方法来做到这一点?如果我想使用绘图标记更早时刻粒子的轨迹怎么办?

最佳答案

使用 Plots.jl 无法删除以前的数据。可以使用 plot 删除之前的绘图或 scatter命令而不是 plot!scatter! .以下是一些如何使用 @gif 创建动画的示例。宏 ( http://docs.juliaplots.org/latest/animations/ )

创建一些虚拟数据:

using Plots

t = range(0, 4π, length = 100)
r = range(1, 0, length = 100)

x = cos.(t) .* r
y = sin.(t) .* r

在每一步中只绘制最后一个当前点:
@gif for i in eachindex(x)
scatter((x[i], y[i]), lims = (-1, 1), label = "")
end

enter image description here

在当前位置用标记绘制所有先前的步骤:
@gif for i in eachindex(x)
plot(x[1:i], y[1:i], lims = (-1, 1), label = "")
scatter!((x[i], y[i]), color = 1, label = "")
end

enter image description here

与上面相同,降低旧步骤的 alpha(仅显示最新的 10 个步骤):
@gif for i in eachindex(x)
plot(x[1:i], y[1:i], alpha = max.((1:i) .+ 10 .- i, 0) / 10, lims = (-1, 1), label = "")
scatter!((x[i], y[i]), color = 1, label = "")
end

enter image description here

关于animation - 在 Julia 中删除以前的数据/图(Plots.jl,GR 后端),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58103056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com