Зависает анимация карт с изменяющимися шейп-файлами (всего 4 разных шейп-файла) - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь создать анимацию роста границ США за год. Хотя я могу быстро сгенерировать каждый отдельный сюжет, анимация зависает, когда я пытаюсь создать анимированную карту (без индикатора выполнения) даже с небольшим количеством кадров.

Вот пример кода с 4 датами, любые идеи, как сгенерировать анимацию?

    library(USAboundaries)
    library(dplyr)
    library(ggplot2)
    library(gganimate)
    
    dates <- seq(as.Date("1783-09-03"), as.Date("2000-12-31"), by="years")
    dates <- dates[c(1,29, 52, 75)]
    maps <- lapply(dates, function(date) {
      map <- us_states(map_date = date, resolution = "high")
      map$year <- date
      map
    }) %>%
      bind_rows() %>%
      select(id_num, terr_type, state_code, geometry, year, name)
    # Generating all the maps at once works just fine
    all_maps <- ggplot() +
      geom_sf(data = maps)
    all_maps
    # Animating maps hangs once its called
    animated_map <- ggplot() +
      geom_sf(data = maps) +
      transition_states(
        year,
        transition_length = 2,
        state_length = 1
      )
    animated_map

1 Ответ

1 голос
/ 12 июля 2020

Вы можете использовать transition_manual. Попробуйте это на своем maps

animated_map <- ggplot() +
  geom_sf(data = maps) +
  transition_manual(year)

animate(animated_map, renderer = gifski_renderer())

Обратите внимание, что я использую gifski_renderer() из gifski пакета. Если у вас есть полный доступ к местоположению по умолчанию, он может вам не понадобиться. Вы получите следующий результат:

вывод

...