如何自定义 Plotly/R/ggplot2 动画断点(帧间距、持续时间)

Posted

技术标签:

【中文标题】如何自定义 Plotly/R/ggplot2 动画断点(帧间距、持续时间)【英文标题】:How to customize Plotly/R/ggplot2 animation breakpoints (frame spacing, duration) 【发布时间】:2021-03-27 19:20:31 【问题描述】:

我正在尝试使用ggplotly 为时间点设置动画。然而,时间间隔的长度是可变的,而且似乎 plotly 的默认行为是为每个给定帧在动画滑块上设置相等的间距。这是不可取的,因为恒定间距会错误地表示数据集中的持续时间。

我无法弄清楚是否有任何方法可以改变这一点。是否可以自定义动画滑块上的步骤之间的间距——也许还有每个步骤之间的持续时间?

简单示例:

x <- tribble(
    ~x, ~y, ~t,
    1, 1, 1,
    2, 2, 2,
    4, 4, 4
)
g <- ggplot(x, aes(x, y)) +
    geom_point(aes(frame=t))

ggplotly(g)

Output image 在本例中,时间 4 与时间 2 的距离与时间 2 与 1 的距离一样。

我现在能想到的最好的解决方法是在所有正确的位置复制数据,以综合确保时间/帧之间的间距实际上相等。这仍然不是最理想的,因为这样每次帧从合成时间转换到观察到的时间时,它都会使数据看起来不切实际地跳跃。

【问题讨论】:

【参考方案1】:

如果您只是想要在帧之间插入动画,您可以使用gganimate 来实现。它与 plotly 的功能不同(它本质上是一个 gif),但会以您在示例中尝试的方式显示。

library(gganimate)

g2 <- ggplot(x, aes(x, y)) +
  geom_point() +
  labs(title = "t = frame_time") +
  transition_time(t)

animate(g2)

【讨论】:

谢谢! plotly 的交互性是一个很大的吸引力(这个可视化正在向一些交互式 html 发展),但是知道 gganimate 可以是一个改变其转换时间的替代方案真的很有帮助。

以上是关于如何自定义 Plotly/R/ggplot2 动画断点(帧间距、持续时间)的主要内容,如果未能解决你的问题,请参考以下文章

如何实现自定义segue动画?

对于自定义 segue 动画,如何告诉 ViewController 它是动画的?

如何在 MUI 中应用自定义动画效果@keyframes?

如何将自定义视图动画化为自定义视图

如何在Canvas中实现自定义路径动画

如何在Canvas中实现自定义路径动画