Python包bar-chart-race 0.1.0无法将千位分隔符修改为点号问题
bar-chart-race 0.1.0 德国/荷兰风格数值格式解决方案
错误原因说明
- 直接对DataFrame对象使用
"{0:n}".format(x)报错,是因为n格式符仅支持单个数值类型变量,不能直接作用于整个DataFrame - pandas的
style.format仅修改交互式环境下的表格展示样式,不会修改原始数据,也无法被bar-chart-race读取,因此无法同步到生成的图表中
推荐解决方案
直接在调用bar_chart_race绘图函数时,通过fmt参数传入自定义的数值格式化规则即可,无需修改全局配置,示例代码如下:
import bar_chart_race as bcr import pandas as pd # 你的数据准备步骤,此处省略 # df = pd.read_csv("你的数据文件路径") bcr.bar_chart_race( # 保留你原本设置的所有参数,比如filename、title、orientation等 filename="output.mp4", title="图表标题", # 核心配置:自定义数值格式,实现1.000,23的德式显示 fmt=lambda x: f"{x:,.2f}".replace(",", "X").replace(".", ",").replace("X", ".") )
格式调整说明
- 若不需要保留两位小数,仅展示整数,将格式符
:,.2f替换为:,d即可,对应fmt配置为:fmt=lambda x: f"{x:,d}".replace(",", ".") - 该配置直接作用于生成的动态图表上的数值标签,不会影响原始DataFrame的数值
可选:配合locale配置的方案
如果你已经正确配置了系统的德国区域locale,也可以直接调用locale的格式化方法,避免手动替换字符:
import locale import bar_chart_race as bcr # 不同系统的locale字符串写法有差异: # Windows系统可填 'deu_DEU' 或 'German_Germany.1252' # Linux/macOS系统可填 'de_DE.UTF-8' locale.setlocale(locale.LC_ALL, 'de_DE.UTF-8') bcr.bar_chart_race( # 其他参数保留 fmt=lambda x: locale.format_string('%.2f', x, grouping=True) )
内容的提问来源于stack exchange,提问作者Jordi
相关产品推荐
相关产品推荐

