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

如何让Python中bar_chart_race动画的最后一帧延长停留时间?

解决bar_chart_race动画最后一帧停留过短的问题
  • 方法一:重复DataFrame最后一行(推荐)
    bar_chart_race没有直接设置结尾停留的参数,最简便的方式是在你的数据框df_tp末尾重复最后一行若干次,让动画在最后多运行几个周期,从而实现停留效果。

    比如要让最后一帧停留4.5秒(3个周期,每个周期1500ms),可以这样修改:

    import bar_chart_race as bcr
    import pandas as pd
    
    # 重复最后一行3次
    repeat_times = 3
    last_row = df_tp.iloc[-1:]
    df_extended = pd.concat([df_tp, pd.concat([last_row]*repeat_times, ignore_index=False)])
    
    # 调用bar_chart_race,参数沿用你的设置
    bcr.bar_chart_race(df = df_extended, 
                       n_bars = 10, 
                       sort='desc',
                       period_fmt='Gameweek {x:.0f}',
                       period_length=1500,
                       steps_per_period = steps_per_period,
                       title='my title',
                       filename = 'fpl_fitcip.mp4',
                       interpolate_period = False  # 注意这里应该用布尔值False,而非字符串'false'
                       )
    

    注意:原代码里的interpolate_period='false'是错误写法,应传入布尔值False,否则字符串会被解析为True导致插值生效。

  • 方法二:用MoviePy编辑生成的视频
    如果不想修改数据,可以用MoviePy加载生成的MP4视频,直接添加结尾停留片段:

    from moviepy.editor import VideoFileClip, concatenate_videoclips
    
    # 加载生成的视频
    clip = VideoFileClip("fpl_fitcip.mp4")
    # 提取最后一帧,转为指定时长的停留片段(这里设为4.5秒)
    last_frame = clip.to_ImageClip(duration=4.5)
    # 拼接原视频和停留片段
    final_clip = concatenate_videoclips([clip, last_frame])
    # 保存最终视频
    final_clip.write_videofile("fpl_fitcip_with_end.mp4")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 01:17:03