gganimate 具有相同 x 值的多个点

gganimate with multiple points for same x value

我有一些数据,其中多个 y 坐标值对应一个 x 坐标值。它类似于此问题中包含的那个。它还有一个 state 变量,必须用于 gganimate.

中的 transition_state() 函数
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()

剧情可以找到HERE

我想使用 gganimate transition_state() 函数使用数据中的状态列,如下所示,但显示错误。

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

我做错了什么?

提前致谢

使您的代码正常工作的一个选项是按 grpstate 分组,例如使用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)