Python条形图竞速中如何设置周期值为索引+1或读取指定列
解决bar_chart_race周期显示问题
问题根源
你之前写的{x:.0f + 1}是错误的Python格式字符串语法,这才引发了格式解析错误(ffmpeg的提示是误导性的,实际是Matplotlib格式解析失败)。下面针对你的两个需求给出具体解决方案:
需求1:将周期索引+1显示
有两种简单方法:
- 方法一:修改DataFrame索引
提前把原0-based索引改成1-based,之后直接用原来的格式字符串即可:# 修改索引为从1开始 df_tp.index = df_tp.index + 1 # 运行条形图竞速 import bar_chart_race as bcr bcr.bar_chart_race(df = df_tp, n_bars = 10, sort='desc', period_fmt='Gameweek {x:.0f}', period_length=1500, steps_per_period = 20, title='my title', filename = 'fpl.mp4', interpolate_period = False # 建议用布尔值False,而非字符串'false' ) - 方法二:使用自定义格式函数
不需要修改索引,直接给period_fmt传一个lambda函数,对周期值做加1处理:import bar_chart_race as bcr bcr.bar_chart_race(df = df_tp, n_bars = 10, sort='desc', period_fmt=lambda x: f"Gameweek {int(x) + 1}", # 自定义格式逻辑 period_length=1500, steps_per_period = 20, title='my title', filename = 'fpl.mp4', interpolate_period = False )
需求2:直接读取数据中的'gameweek'列
如果你的数据中存在gameweek列,先将该列设置为DataFrame的索引,这样周期就会直接使用正确的gameweek数值:
# 将gameweek列设为索引(确保该列是数值类型) df_tp = df_tp.set_index('gameweek') # 运行条形图竞速 import bar_chart_race as bcr bcr.bar_chart_race(df = df_tp, n_bars = 10, sort='desc', period_fmt='Gameweek {x:.0f}', period_length=1500, steps_per_period = 20, title='my title', filename = 'fpl.mp4', interpolate_period = False )
内容的提问来源于stack exchange,提问作者Jahlove
相关产品推荐
相关产品推荐

