在不规则的时间为持久性数据点设置动画

时间:2018-11-30 01:45:42

标签: r ggplot2 gganimate

我正在尝试对数据点进行动画处理以显示在特定时间。数据点没有相互链接,因此应该没有到/从它们的路径。它们应该只出现在指定的时间和地点。

但是,可能由于不定期的时间间隔和帧渲染的性质,似乎有很多导入。在数据点之前有很长的间隔之前,这确实很明显。

我搞砸了shadow_trail()中的shadow_wake()nframesanimate(),还有其他一些transition_*()功能都没用。

这是一个10x10网格的代码示例,其中每个正方形在数据中指定的时间弹出,但不以任何规则的间隔弹出。您会看到一些广场前往目的地。它们应该就地显示。

library(ggplot2)
library(gganimate)

pos <- seq(1, 100, 1)

# Squares on a 10x10 grid that pop up at random times
grid_data <- data.frame(pct = pos,
                        t = rnorm(100, mean=50, sd=25),
                        xpos = (pos-1) %% 10,
                        ypos = floor((pos-1) / 10))

p <- ggplot(grid_data, aes(x=xpos, y=ypos, fill=t))  # plot tiles, color by time of arrival 
p <- p + geom_tile(aes(width=0.95, height=0.95))     # tiles with some gap around them 
p <- p + transition_time(time=grid_data$t)           # Show data points by their time
p <- p + shadow_mark(past=TRUE, future=FALSE)        # Keep showing past (prior) data points

animate(p)

enter image description here

1 个答案:

答案 0 :(得分:3)

我认为正在发生的事情是,当您使用transition_time时,您的过渡是从一个图块到另一个图块的“旅行”。您可以使用transition_reveal来防止这种情况。

尝试一下:

library(ggplot2)
library(gganimate)

pos <- seq(1, 100, 1)

grid_data <- data.frame(pct = pos,
    t = rnorm(100, mean=50, sd=25),
    xpos = (pos-1) %% 10,
    ypos = floor((pos-1) / 10))

grid_data %>%
  ggplot() +
    aes(x=xpos, y=ypos, fill=t) + 
    geom_tile(aes(width=0.95, height=0.95)) +   
    transition_reveal(pct, t, keep_last = TRUE) +
    anim_save("animated_geom_tile.gif")

哪个生产这个...

enter image description here