Анимация постоянных точек данных в нерегулярное время - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь анимировать точки данных, чтобы они появлялись в определенное время.Точки данных не связаны друг с другом, поэтому не должно быть следов к ним.Они должны появляться только в назначенное время и в определенном месте.

Однако, возможно, из-за нерегулярных временных интервалов и рендеринга кадра, кажется, что вводится много.Это действительно заметно до того, как точка данных, перед которой стоит длинный интервал.

Я перепутал с shadow_trail(), shadow_wake(), nframes в animate(), а также с некоторыми другими 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 голосов
/ 30 ноября 2018

Я думаю, что то, что происходит, когда вы используете 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

...