#r #gganimate
#r #gganimate
Вопрос:
Я изо всех сил пытаюсь понять, как использовать geom_smooth()
вместе с. gganimate
Reprex доступен ниже. При выполнении инструкции plot, исключающей transition_time
функцию, я визуализирую статический график, как и ожидалось.
Проблема возникает, когда я пытаюсь сделать этот график динамическим, используя transition_time()
, а также shadow_mark()
для сохранения точек. Возникает следующая ошибка:
Ошибка в
$<-.data.frame
(*tmp*
, «group», значение = «»): замена имеет 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 пакетом reprex (версия 0.2.1)
Я ожидаю чего-то похожего на это (источник):
Ответ №1:
Попробуйте это:
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()
Комментарии:
1. Спасибо @Raoul Duke! Я думаю, что это приближается к тому, что я ожидал. На всякий случай, вы знаете, как заставить их появляться одновременно?
2. Мой плохой здесь @Raoul Duke, под «ними» я подразумеваю все сюжетные линии, движущиеся вперед одновременно, а не одну за другой
3. Нет проблем, я понял ваше намерение сразу после создания комментария. Я могу получить только точки, используя
ggplot(tmp, aes(x = date, y = voto, color = partido, group = partido)) geom_point() transition_components(date) shadow_mark()
. Поскольку слои пути не поддерживаютсяtransition_components
, я не уверен, как добавить сглаживание.4. Я пытаюсь повторить это, но получаю
Error in `$<-.data.frame`(`*tmp*`, "group", value = "") : replacement has 1 row, data has 0 In addition: There were 13 warnings (use warnings() to see them)