You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用gganimate实现矩形随ggplot时间序列逐步显现?

实现矩形随时间序列逐步展开的gganimate动画

当然可以实现,核心是让矩形的右边界(xmax)随动画进度动态变化,而非固定值。修改后的代码如下:

library(ggplot2)
library(gganimate)

df <- data.frame(
    x = c(1,2,3,4,5,6,7,8,9,10),
    y = c(4,5,6,7,6,5,4,5,6,7)
)

p <- ggplot() +
    geom_line(data = df, aes(x = x, y = y)) +
    # 动态控制矩形右边界:x<5时矩形不显示,x在5-7时xmax随x递增,x>7时保持7
    geom_rect(aes(xmin = 5, xmax = pmin(x, 7), ymin = -Inf, ymax = Inf), alpha = 0.1) +
    transition_reveal(x) +
    theme_minimal()

animate(p, fps = 20, renderer = gifski_renderer(file = "test.gif"))

关键改动说明:

  • 将geom_rect的xmax从固定值7改为pmin(x, 7):
    • 当动画进度的x小于5时,xmin=5大于xmax=pmin(x,7),矩形不会显示;
    • 当x在5到7之间时,xmax会随着x的推进从5逐步增加到7,实现矩形展开的效果;
    • 当x超过7后,xmax固定为7,保持矩形完全展开的状态。
  • 保留transition_reveal(x)让折线和矩形的动画进度同步,确保折线推进到对应位置时,矩形同步展开。

内容的提问来源于stack exchange,提问作者Rim ManHa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 16:12:18