#r #ggplot2 #gganimate
Вопрос:
У меня есть некоторые данные, в которых несколько значений координат y для одного значения координаты x. Он похож на тот, который включен в этот вопрос. Он также имеет state
переменную, которая должна использоваться для transition_state()
функции in gganimate
.
library(data.table)
df <- data.table(
x = seq(11),
type1 = c(2, 3, 2.5, 3, 2, 2, 3, 2.5, 3.5, 3, 2),
type2 = c(NA, 3, 3.5, 3, NA, NA, 3, 3.5, 4, 3, NA)
)
m.df <- melt.data.table(df, "x", variable.name = "grp")
m.df[x %in% seq(5), "state" := 1][x %in% seq(6, 11), "state" := 2]
m.df
#> x grp value state
#> 1: 1 type1 2.0 1
#> 2: 2 type1 3.0 1
#> 3: 3 type1 2.5 1
#> 4: 4 type1 3.0 1
#> 5: 5 type1 2.0 1
#> 6: 6 type1 2.0 2
#> 7: 7 type1 3.0 2
#> 8: 8 type1 2.5 2
#> 9: 9 type1 3.5 2
#> 10: 10 type1 3.0 2
#> 11: 11 type1 2.0 2
#> 12: 1 type2 NA 1
#> 13: 2 type2 3.0 1
#> 14: 3 type2 3.5 1
#> 15: 4 type2 3.0 1
#> 16: 5 type2 NA 1
#> 17: 6 type2 NA 2
#> 18: 7 type2 3.0 2
#> 19: 8 type2 3.5 2
#> 20: 9 type2 4.0 2
#> 21: 10 type2 3.0 2
#> 22: 11 type2 NA 2
#> x grp value state
Данные строятся с использованием gganimate, как показано ниже.
library(ggplot2)
ggplot(m.df, aes(x, value, group = grp, color = grp))
geom_line(na.rm = T)
geom_point(na.rm = T)
theme_bw()
С сюжетом можно ознакомиться ЗДЕСЬ
Я хочу использовать transition_state()
функцию gganimate, используя столбец состояния в данных, как показано ниже, но показывает ошибку.
library(gganimate)
ggplot(m.df, aes(x, value, group = grp, color = grp))
geom_line(na.rm = T)
geom_point(na.rm = T)
transition_states(state)
#> Error in rep(seq_len(nrow(polygon)), splits 1): invalid 'times' argument
Что я здесь делаю не так?
Заранее спасибо
Ответ №1:
Один из вариантов заставить ваш код работать-это группироваться по обоим grp
и state
использовать, например interaction
. В противном gganimate
случае не удается разделить ваши данные на state
, так как оба состояния присутствуют в каждой группе. Кроме того, вы должны поставить group
aes после color
aes. В противном случае вы столкнетесь с той же проблемой:
library(ggplot2)
library(gganimate)
ggplot(m.df, aes(x, value, color = grp, group = interaction(grp, state)))
geom_line(na.rm = T)
geom_point(na.rm = T)
transition_states(state)