Seaborn在柱状图中添加百分比符号



我正试图将百分比(%(符号添加到条形图中的每个值中,但我不完全确定如何执行。我知道get_text函数可以帮助

g =  sns.catplot(
data=df, 
kind="bar",
x="City", 
y="Customers", 
hue="Acquisition_Channel",
ci="sd", 
palette="dark", 
alpha=.7,
height=8,   
)
g.set(ylim=(0, 100)) 
g.despine(right=False) 
g.set_xlabels("City") 
g.set_ylabels("Share of Customers vs. Total acquired Customers (%)")  
g.set_yticklabels("") 
ax=g.ax #annotate axis = seaborn axis
def annotateBars(row, ax=ax):
for p in ax.patches:
ax.annotate("%.0f" % p.get_height(), (p.get_x() + p.get_width() / 2., p.get_height()),
ha='center', va='center', fontsize=12, color='gray', rotation=0, xytext=(0, 20),
textcoords='offset points')
plot = df.apply(annotateBars, ax=ax, axis=1)

此处为

ax.annotate("%.0f" % p.get_height(), (p.get_x() + p.get_width() / 2., p.get_height()),

您使用的是string % data,它不是seaborn特有的,但通常在python中使用。如果要将文字%加倍(%%(,例如:

print("%.0f%%" % 95)

输出

95%

如果你想了解更多阅读文档中的旧字符串格式

最新更新