在 MatplotLib 中向条形标签添加逗号
Adding Comma to Bar Labels in MatplotLib
我一直在使用 ax.bar_label
方法将数据值添加到条形图中。数字很大,例如 143858918。如何使用 ax.bar_label
方法在数据值中添加逗号?我确实知道如何使用注释方法添加逗号,但如果可以使用 bar_label
,我不确定。是否可以使用可用的 fmt
关键字参数?
Is it possible using the fmt
keyword argument?
fmt
参数基于旧的 %
运算符,不支持逗号分隔符。
- 相反,使用带有 f 字符串的
labels
参数。
将容器的 datavalues
格式化为 {:,.0f}
以获得逗号分隔符(如果需要更多小数位,请增加 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])
我一直在使用 ax.bar_label
方法将数据值添加到条形图中。数字很大,例如 143858918。如何使用 ax.bar_label
方法在数据值中添加逗号?我确实知道如何使用注释方法添加逗号,但如果可以使用 bar_label
,我不确定。是否可以使用可用的 fmt
关键字参数?
Is it possible using the
fmt
keyword argument?
fmt
参数基于旧的%
运算符,不支持逗号分隔符。- 相反,使用带有 f 字符串的
labels
参数。
将容器的 datavalues
格式化为 {:,.0f}
以获得逗号分隔符(如果需要更多小数位,请增加 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])