具有新f-字符串格式样式的Matplotlib条形图标签 [英] Matplotlib bar labels with new f-string format style
本文介绍了具有新f-字符串格式样式的Matplotlib条形图标签的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
自matplotlib 3.4.0起,Axes.bar_label
方法允许为条形图添加标签。
但是,标签格式选项适用于旧样式格式,例如fmt='%g'
如何才能使其与新的样式格式一起工作,从而允许我执行百分比、千位分隔符等操作:'{:,.2f}', '{:.2%}', ...
我首先想到的是以某种方式从ax.containers
中获取初始标签,然后重新格式化它们,但它还需要适用于不同的条形图结构、不同格式的分组条形图等。
推荐答案
如何使用百分比、千位分隔符等新样式格式?
使用新的bar_label
方法,使用labels
参数。使用所需的f字符串设置条形容器的datavalues
的格式,并将其设置为labels
。
例如:
千位分隔符f字符串
bars = plt.bar(list('ABC'), [12344.56, 23456.78, 34567.89]) plt.bar_label(bars, labels=[f'${x:,.2f}' for x in bars.datavalues])
f字符串百分比
bars = plt.bar(list('ABC'), [0.123456, 0.567890, 0.789012]) plt.bar_label(bars, labels=[f'{x:.2%}' for x in bars.datavalues])
堆叠百分比f字符串
x = list('ABC') y = [0.7654, 0.6543, 0.5432] fig, ax = plt.subplots() ax.bar(x, y) ax.bar(x, 1 - np.array(y), bottom=y) # now 2 bar containers: white labels for blue bars, black labels for orange bars colors = list('wk') for bars, color in zip(ax.containers, colors): labels = [f'{x:.1%}' for x in bars.datavalues] ax.bar_label(bars, labels=labels, color=color, label_type='center')
这篇关于具有新f-字符串格式样式的Matplotlib条形图标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文