Переход между двумя разными объектами geom_smooth () в gganimate - PullRequest
1 голос
/ 10 июля 2020

У меня проблемы с gganimate, и я был бы признателен за некоторую помощь.

Меня интересует, как отношения между двумя непрерывными переменными различаются между двумя значениями факторной переменной. Представьте, например, что меня интересует, как меняется соотношение между результатами тестов и ростом до и после данного вмешательства. Мои данные имеют примерно следующую структуру:

set.seed(24601)

height <- rnorm(10, 0, 1)

test_data <- 
  tibble(height = rep(height, 2),
         test_scores = rnorm(20, 0, 1),
         before_or_after = c(rep("before", 10), rep("after", 10)),
         id = rep(c("a", "b", "c", "d", "e", "f", "g", "h", "i", "j"), 2))

Если бы я хотел показать это в stati c ggplot, я мог бы сделать это:

ggplot(data = test_data) +
  aes(x = height,
      y = test_scores,
      colour = before_or_after) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE)

но мне интересно чтобы привлечь внимание к изменению результатов тестов до и после вмешательства, и поэтому желая оживить каждое наблюдение и geom_smooth ().

Я могу анимировать каждое наблюдение следующим образом:

ggplot(data = test_data) +
  aes(x = height,
      y = test_scores,
      group = id) +
  geom_point() +
  transition_states(before_or_after)

но в идеале я бы сделал что-то вроде следующего:

ggplot(data = test_data) +
  aes(x = height,
      y = test_scores,
      group = id) +
  geom_point() +
  geom_smooth(method = "lm", 
              se = FALSE) +
  transition_states(before_or_after)

с geom_smooth, движущимся рядом с точками. Однако при этом я получаю сообщение об ошибке

Error in `$<-.data.frame`(`*tmp*`, "group", value = "") : 
  replacement has 1 row, data has 0

Если кто-нибудь может посоветовать, как я могу решить эту проблему, я был бы благодарен!

1 Ответ

0 голосов
/ 12 июля 2020

Используйте в своей программе transition_manual(before_or_after) вместо transition_states(before_or_after). Тогда вы получите следующий результат:

вывод

...