如何将 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 轴标签