如何使用 bar_label 的 fmt 选项将 % 添加到注释中

How to add % to annotations using the fmt option of bar_label

我正在尝试在 Matplotlib 中使用新的 bar_label 选项,但我无法找到附加文本的方法,例如'%' 在标签值之后。以前,使用 ax.text 我可以使用 f-strings,但我找不到通过 bar-label 方法使用 f-strings 的方法。

fig, ax = plt.subplots(1, 1, figsize=(12,8))
hbars = ax.barh(wash_needs.index, wash_needs.values, color='#2a87c8')
ax.tick_params(axis='x', rotation=0)

# previously I used this approach to add labels 
#for i, v in enumerate(wash_needs):
#    ax.text(v +3, i, str(f"{v/temp:.0%}"), color='black', ha='right', va='center')

ax.bar_label(hbars, fmt='%.2f', padding=3) # this adds a label but I can't find a way to append a '%' after the number
    
plt.show()

我找到了一种将“%”附加到标签数字的方法 - 添加一个额外的“%%

ax.bar_label(hbars, fmt='%.2f%%', padding=3)

工作示例

import pandas as pd
import seaborn as sns  # for tips data

tips = sns.load_dataset('tips').loc[:15, ['total_bill', 'tip']]
tips.insert(2, 'tip_percent', tips.tip.div(tips.total_bill).mul(100).round(2))

   total_bill   tip  tip_percent
0       16.99  1.01         5.94
1       10.34  1.66        16.05
2       21.01  3.50        16.66
3       23.68  3.31        13.98
4       24.59  3.61        14.68

# plot
ax = tips.plot(kind='barh', y='tip_percent', legend=False, figsize=(12, 8))
labels = ax.set(xlabel='Tips: Percent of Bill (%)', ylabel='Record', title='Tips % Demo')
annotations = ax.bar_label(ax.containers[0], fmt='%.2f%%', padding=3)
ax.margins(x=0.1)