Matplotlib中货币格式设置:无法添加千位分隔符
解决Matplotlib柱状图标签添加美元符号+千位分隔符的问题
方法1:直接使用fmt参数的格式化字符串
bar_label的fmt参数支持带千位分隔符的格式化语法,直接传入对应格式字符串即可:
ax.bar_label(rects2, padding=3, fmt='${x:,.2f}')
其中x代表柱子的数值,:,实现千位分隔符,.2f保留两位小数,前缀$添加美元符号。
方法2:手动生成完整标签列表(修正你之前的尝试)
之前的写法错误在于只生成了单个标签,正确做法是遍历所有柱子的数值生成标签列表:
# 遍历柱子的数值,逐个格式化 labels = [f'${h:,.2f}' for h in rects2.datavalues] ax.bar_label(rects2, padding=3, labels=labels)
这里rects2.datavalues会返回所有柱子的高度数值,确保每个标签对应正确的柱子。
完整验证示例
import matplotlib.pyplot as plt fig, ax = plt.subplots() # 模拟带大数值的柱状图数据 rects2 = ax.bar(['产品A', '产品B', '产品C'], [1567.89, 9876.54, 3456.78]) # 二选一使用上面的方法 ax.bar_label(rects2, padding=3, fmt='${x:,.2f}') # labels = [f'${h:,.2f}' for h in rects2.datavalues] # ax.bar_label(rects2, padding=3, labels=labels) plt.show()
内容的提问来源于stack exchange,提问作者Timothy Kirk
相关产品推荐
相关产品推荐

