如何自定义 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 动画断点(帧间距、持续时间)的主要内容,如果未能解决你的问题,请参考以下文章