等同于gganimate::transition_events plotly

Equivalent of gganimate::transition_events on plotly

在 R 中,使用 gganimate,可以制作动画情节,其中事件随时间出现和消失。例如:

library(lubridate)
library(gganimate)

df=data.frame(
x=c(1,2,3,4),
y=c(1,2,3,4),
start=c(1,2,3,4),
end=c(5,6,7,8),
en=as_date(1),
ex=as_date(1))

ggplot(data=df, aes(x=x,y=y))+
  geom_point()+
  gganimate::transition_events(
     start=start, 
     end=end, 
     enter_length = as.numeric(en), 
     exit_length = as.numeric(ex))

这会生成一个绘图,其中点根据“开始”列出现并根据“结束”列消失。

我想知道是否有一种简单的方法可以在 plotly 中实现相同的效果(最好使用 ggplotly()),让滑块随时间移动。

这里是一个使用 ggplotly 的例子。然而结果并不完全相同:

library(plotly)
library(lubridate)

df = data.frame(
  x = c(1, 2, 3, 4),
  y = c(1, 2, 3, 4),
  start = c(1, 2, 3, 4),
  end = c(5, 6, 7, 8),
  en = as_date(1),
  ex = as_date(1)
)

frame_list <- Map(seq, from = df$start, to = df$end)
DF <- data.frame(x = rep(df$x, times = lengths(frame_list)),
                 y = rep(df$y, times = lengths(frame_list)),
                 frame = unlist(frame_list))

p <- ggplot(DF, aes(x, y)) +
  geom_point(aes(size = y, frame = frame))

fig <- ggplotly(p)

fig %>%
  animation_opts(
    frame = 0,
    easing = "linear",
    redraw = FALSE,
    mode = "immediate"
  )
fig