Как использовать geom_smooth () с gganimate - PullRequest
1 голос
/ 10 апреля 2019

Я пытаюсь понять, как использовать geom_smooth() вместе с gganimate.

Представление доступно ниже. При запуске оператора plot, исключая функцию transition_time, я визуализирую статический график, как и ожидалось.

Проблема возникает, когда я пытаюсь сделать этот график динамическим, используя transition_time(), а также shadow_mark() для сохранения точек. Возникает следующая ошибка:

Ошибка в $<-.data.frame (*tmp*, "группа", значение = ""): замена имеет 1 строку, данные имеют 0

library(readr)
library(tidyr)
library(ggplot2)
library(gifski)
library(gganimate)
library(dplyr)

tst <- readr::read_csv("https://elpais.com/especiales/2019/elecciones-generales/encuestas-electorales/ficheros/tabla.csv?1554807308", 
                       col_types = cols(
                         date = col_date(format = "%d/%m/%y"),
                         house = col_character(),
                         sample = col_double(),
                         turnout = col_double(),
                         PP = col_double(),
                         PSOE = col_double(),
                         UP = col_double(),
                         Cs = col_double(),
                         ERC = col_double(),
                         PDC = col_double(),
                         PNV = col_double(),
                         PAC = col_double(),
                         BIL = col_double(),
                         CC = col_double(),
                         VOX = col_double(),
                         COM = col_double()
                       ))

tst %>% 
  select(date, house, PP, PSOE, UP, Cs, VOX) %>% 
  gather(key = partido, voto, PP, PSOE, UP, Cs, VOX) %>% 
  ggplot(aes(x = date, y = voto, color = partido)) +
  geom_point() + 
  geom_smooth(method = 'loess', formula = 'y ~ x', se = FALSE) +
  transition_time(time = date) + shadow_mark()
Error in `$<-.data.frame`(`*tmp*`, "group", value = ""): replacement
has 1 row, data has 0
In addition: There were 16 warnings (use warnings() to see them)

Создано в 2019-04-10 пакетом Представить (v0.2.1)

Я ожидаю что-то похожее на это ( source ):

from github link

1 Ответ

0 голосов
/ 11 апреля 2019

Попробуйте это:

tmp <- tst %>% 
  select(date, house, PP, PSOE, UP, Cs, VOX) %>% 
  gather(key = partido, voto, PP, PSOE, UP, Cs, VOX) %>%
  filter(!is.na(voto))

ggplot(tmp, aes(x = date, y = voto, color = partido)) + 
  geom_smooth(method = "loess", formula = 'y ~ x', se = FALSE) + 
  geom_point(aes(group = rev(seq_along(date)))) +
  transition_reveal(rev(seq_along(date))) + shadow_mark()
...