Какой переход_ * использовать для анимации карты с помощью gganimate? - PullRequest
2 голосов
/ 01 апреля 2020

Я хочу сделать анимированную карту округа США с количеством подтвержденных случаев COVID-19 с течением времени (да, еще один график коронавируса). Здесь - ссылка на трехдневный выбор данных (приветствуются предложения о более постоянном размещении). Вот код, который создает карту stati c (закомментируйте фильтр, чтобы включить все даты):

library(tidyverse)
library(gganimate)
library(ggmap)
library(maps)
library(scales)

p <- part_data %>%
  filter(date == as.Date("2020-03-30")) %>%
  ggplot(aes(x = long, y = lat, group = group)) +
  geom_polygon(aes(fill = confirmed_new), color = "grey70", size = 0.05) + 
  geom_path(data = state_map, colour = "black") +
  coord_map() +
  scale_fill_distiller(trans = "log10", direction = 1, palette = "YlOrRd", na.value = "white", limits = c(1, 1E4), labels = comma)

, который дает этот довольно хороший график: Map plot

Но как мне теперь сделать анимацию, которая перемещается по датам? Я пытался

p +
  transition_time(date)

и

p + 
  transition_states(date)

, но в обоих случаях R просто зависает, даже до того, как появляется индикатор выполнения рендеринга, и через некоторое время я получаю ошибку Error: cannot allocate vector of size 128.0 Mb , Проблема в том, что я не знаю, использую ли я здесь правильный подход. В документации gganimate я читал, что group aestheti c используется для связи строк, которые принадлежат одному и тому же элементу graphi c, в данном случае графству. Но group также используется самой ggplot для составления сюжета, может ли это быть проблемой? Любая помощь приветствуется. Спасибо.

1 Ответ

0 голосов
/ 01 апреля 2020

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

p + 
  transition_manual(frames = date)
...