向MatplotLib中的条形图标签添加逗号
问题描述
我一直在使用ax.bar_label
方法向条形图添加数据值。这个数字很大,比如143858918。如何使用ax.bar_label
方法向数据值添加逗号?我知道如何使用Annotate方法添加逗号,但是否可以使用bar_label
添加逗号,我不确定。是否可以使用可用的fmt
关键字参数?
解决方案
是否可以使用
fmt
关键字参数?
fmt
参数基于旧的%
运算符,该运算符不支持逗号分隔符。- 改为使用带有f字符串的
labels
参数。
使用{:,.0f}
格式化容器的datavalues
以获得逗号分隔符(如果需要更多小数位则增加0):
container = ax.containers[0]
ax.bar_label(container, labels=[f'{x:,.0f}' for x in container.datavalues])
或对于分组条形图,迭代所有容器:
for container in ax.containers:
ax.bar_label(container, labels=[f'{x:,.0f}' for x in container.datavalues])
玩具示例:
x = np.random.default_rng(123).integers(10_000_000, size=5)
fig, ax = plt.subplots()
ax.bar(range(len(x)), x)
container = ax.containers[0]
ax.bar_label(container, labels=[f'{x:,.0f}' for x in container.datavalues])
相关文章