Использование GGanimate позволяет создать точки группы на графике рассеяния сгруппированных, как только все они появятся - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь создать групповую диаграмму рассеяния, в которой точки появляются в разные моменты времени (основанные на переменной времени), и после появления всех точек определенной группы все они исчезают.Различные группы не начинаются в одну и ту же точку времени и не заканчиваются в одной и той же конечной точке, а также не имеют одинакового количества точек данных.

Я полагаю, это должна быть некоторая комбинация transition_time() (в реальных данных используется метка фактического времени) exit_disappear() и / или shadow_mark(), но я не могу заставить это работать.

Я пробовал это, но это не дает нужные мне результаты.Мне, например, нужно, чтобы все группы А появлялись одна за другой, а затем исчезали после момента времени 15. И чтобы вся группа В начала появляться после момента времени 21, одна за другой, а затем исчезала после момента времени 45.

library(ggplot2)
library(gganimate)
library(tibble)

# data
x <- c(-15:-1, -5:19,  1:45, -10:4)
y <- x + rnorm(100, 0, 2) + c(rep(-10, 15), rep(20, 25), rep(-5, 45), rep(8, 15))
id <- c(rep("A", 15), rep("B", 25), rep("C", 45), rep("D", 15))
time <- c(1:15, 21:45, 1:45, 41:55)
tib <- tibble(x,y, id, time)

# does not disappear after one id is done
anim_tib1 <- ggplot(tib, aes(x = x, y = y, col = id, group = id))+
  geom_point(size = 2)+ 
  transition_time(time = time)+
  exit_disappear()+
  shadow_mark()

# this works, but now there is no trail 
anim_tib2 <- ggplot(tib, aes(x = x, y = y, col = id, group = id))+
  geom_point(size = 2)+ 
  transition_components(time)+
  exit_disappear()

# this almost yields the same result as the first try
anim_tib3 <- ggplot(tib, aes(x = x, y = y, col = id, group = id))+
  geom_point(size = 2)+ 
  transition_components(time)+
  exit_disappear()+
  shadow_mark()

1 Ответ

0 голосов
/ 02 марта 2019

Я думаю, shadow_wake вместо shadow_mark может дать результат, который вы ищете:

# modified code from anim_tib1
ggplot(tib, aes(x = x, y = y, col = id, group = id)) +
  geom_point(size = 2) + 
  transition_time(time = time) +
  exit_disappear() +
  shadow_wake(wake_length = 1, size = NULL, alpha = NULL, wrap = FALSE)

plot

Данные:

set.seed(123)
x <- c(-15:-1, -5:19,  1:45, -10:4)
y <- x + rnorm(100, 0, 2) + c(rep(-10, 15), rep(20, 25), rep(-5, 45), rep(8, 15))
id <- c(rep("A", 15), rep("B", 25), rep("C", 45), rep("D", 15))
time <- c(1:15, 21:45, 1:45, 41:55)
tib <- tibble(x, y, id, time)
rm(x, y, id, time)
...