Seaborn 向条形图添加百分比符号

时间:2021-06-02 11:43:24

标签: python matplotlib 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)


1 个答案:

答案 0 :(得分: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%

如果您想了解更多,请阅读old string formatting in docs