如何让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
相关产品推荐
相关产品推荐

