如何为R中的粒子运动设置动画

时间:2019-06-13 00:05:53

标签: r animation ggplot2

我想同时对许多粒子的位置进行动画处理

假设我们有:

df <- data.frame(
    x = c(1,2,3,4,5,6,7,8,9,10), 
    y = c(2,3,4,5,6,7,8,9,10,1),
    particle = c(1,1,2,3,1,3,1,3,2,1),
    time = 1:10 )

表示:时间1中的粒子1位于位置(x = 1,y = 2) 然后在时间2等位置到达(x = 2,y = 3)的位置。

粒子2在时间3的位置(x = 3,y = 4)出现,并在时间9移至其他位置。

我已经尝试过了

ggplot(df, aes(x, y), show.legend=FALSE)  +  
    geom_point() +
    transition_states(time)

但是动画只能同时显示一个粒子。

如何为所有粒子设置动画(在示例中,三个粒子必须一直可见)

thkx。

bt。

2 个答案:

答案 0 :(得分:4)

如果要保持所有粒子可见,则必须在每个时间点为每个粒子创建行(可以在粒子2和3出现之前省略行)。使用tidyverse

library(tidyverse)

expanded = df %>%
    # Create rows for each combination of particle and time
    complete(particle, time) %>%
    group_by(particle) %>%
    arrange(time) %>%
    # Fill missing x and y with the current position, up to
    #   the next change for that particle
    fill(x, y, .direction = "down")

# Make particle a factor
ggplot(expanded, aes(x, y, colour = factor(particle)))  +  
    geom_point() +
    transition_states(time)

结果:

enter image description here

答案 1 :(得分:0)

谢谢你们的帮助

我到达了此解决方案:

procedure Query_MYREC
  (MYREC_Value : MYREC;
   Process : not null access procedure (Pinned_MYREC : String))
is
   Pinned_MYREC : String (1 .. MYREC_Value.n)
     with Import, Address => MYREC_Value.str;
begin
   Process.all (Pinned_MYREC);
end Query_MYREC;

result