如何将 y 轴转换为 Seaborn 图中的 % 值? [复制]

Posted

技术标签:

【中文标题】如何将 y 轴转换为 Seaborn 图中的 % 值? [复制]【英文标题】:How to convert y axis to % values in Seaborn graph? [duplicate] 【发布时间】:2020-12-20 20:40:46 【问题描述】:

我想将下图在 seaborn 中制作以显示 y 轴的百分比。比如 15% 20%... 我试过 # ylabel=[':.2'.format(x)+'%'对于 [2.2,2.4,2.6,2.8,3.0,3.2,3.4,3.6]] 中的 x,但它不起作用。我要改什么?

df_graph2['day']=df['day'].unique().tolist()
df_graph2['Contactable_Percent']=[0]*len(df['day'].unique().tolist())

for pos,value in enumerate(df['day'].unique().tolist()):
    print(pos)
    df_graph2['Contactable_Percent'].iloc[pos]=(df.query('day==@value').query('Completed==1').shape[0])/(df.query('day==@value')['Completed'].shape[0])  

df_graph2=df_graph2.reindex([5,4,3,2,1,0])

sns.set_style("white",'xtick.color': '.1','xtick.minor.size':16)
plt.figure(figsize=(10, 8))


ax=sns.barplot(x="day", y="Contactable_Percent", data=df_graph2, ci=None,color='b',saturation=1,edgecolor=(0,0,0))
ax.set(ylim=(0.14,.38))
sns.set(font_scale = 2)

ax.set_ylabel('')    
ax.set_xlabel('')
ax.set_xticklabels(ax.get_xticklabels(), rotation=90)


plt.title("Week 35: 24-30 Aug", size=26)

编辑**********

【问题讨论】:

你试过这个***.com/questions/31357611/format-y-axis-as-percent吗? 【参考方案1】:

将数字(int 或 float)解析为字符串时,可以使用 '%' 格式化参数,如下所示:

f'0.21:%' => '21.000000%'

您的方法非常接近解决问题,只有一个小错误。 您需要将 '%' 放入格式化字符串的大括号中,而不是将其附加到数字:

ylabel = [f'i:.0%' for i in df_graph2['Contactable_Percent']]

然后将此列表设置为 ylabel:

ax.set_yticklabels(ylabel)

【讨论】:

嗨,大卫,感谢您的回复。为 df_graph2['Contactable_Percent'].sort_values()] 中的 x 尝试了 ylabel=[f'x:.0%'。成功将 ylabels 更改为百分比。但是,条形图的值不会随着标签的变化而动态变化。我该如何改变这个? 你所说的“动态变化”是什么意思?你在说哪些酒吧标签?给定代码中未标记各个条

以上是关于如何将 y 轴转换为 Seaborn 图中的 % 值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何从 seaborn / matplotlib 图中删除或隐藏 x 轴标签

如何将 pandas 系列转换为 seaborn 条形图

Seaborn:如何将每个分类值的 Y 轴缩放到 100%

如何在 seaborn FacetGrid 中格式化 y 轴或 x 轴标签

在 Seaborn 多图中调整 y 轴

使用 Seaborn 和 Matplotlib 在热图和线图的共享子图中对齐 x 轴刻度