使用bar_chart_race时bar_texttemplate参数报错,如何调整小数位数?
解决bar_chart_race条形图数值小数位数显示问题
方法1:升级到支持bar_texttemplate的版本
你使用的0.2.0版本确实未包含bar_texttemplate和tick_template参数,这两个参数是在0.3.0及以上版本中新增的。直接升级库即可解决问题:
pip uninstall bar-chart-race -y pip install bar-chart-race --upgrade
升级后,你的原有代码(包含bar_texttemplate='{x:,.2f}')就能正常运行;如果需要格式化坐标轴刻度,还可以添加tick_template='{x:,.2f}'参数。
方法2:在0.2.0版本中自定义格式化(不升级)
如果无法升级版本,可通过perpendicular_bar_func参数结合Matplotlib API手动修改条形标签格式:
import matplotlib.pyplot as plt import bar_chart_race as bcr # 创建绘图对象 fig, ax = plt.subplots(figsize=(5, 3)) def format_bar_labels(ax): # 遍历所有条形的标签,重新格式化数值为两位小数 for label in ax.containers[0].labels: try: val = float(label.get_text()) label.set_text(f"{val:,.2f}") except ValueError: # 处理非数值标签的异常情况 pass # 调用动态条形图生成函数 bcr.bar_chart_race( df=df, period_summary_func=func, title="xxxx", sort='desc', fig=fig, perpendicular_bar_func=lambda ax, data, dt: format_bar_labels(ax) )
perpendicular_bar_func会在每个周期的绘图步骤中被调用,我们利用这个钩子函数修改条形标签的文本格式,实现两位小数的显示效果。
内容的提问来源于stack exchange,提问作者Emmanuel Akande
相关产品推荐
相关产品推荐

