【发布时间】:2019-08-19 01:15:47
【问题描述】:
在计数图中,我需要在条形顶部添加百分比。我已经尝试过this 帖子中给出的解决方案。但我只得到第一个栏的百分比,而不是其余的。有什么办法可以解决吗?代码 sn-p 如下:
import pandas as pd
my_data_set = pd.DataFrame({'ydata': ['N', 'N', 'N', 'N', 'N', 'N', 'Y', 'N', 'Y', 'N', 'N'],
'p_f_test': ['False', 'True', 'True', 'True', 'False', 'False', 'False', 'False', 'False', 'False', 'True']})
total = float(len(my_data_set))
ax = sns.countplot(x='p_f_test',hue='ydata',data=my_data_set)
for p in ax.patches:
height = p.get_height()
ax.text(p.get_x()+p.get_width()/2., height + 3, '{:1.2f}'.format(height/total), ha="center").astype(int)
【问题讨论】:
-
我建议您先删除
.astype(int),因为您无法将matplotlib.text.Text元素转换为整数。 -
如果我删除然后我得到以下错误:
ValueError: cannot convert float NaN to integer -
有趣。需要minimal reproducible example 来查看它的来源。
-
好吧,这是简单的数据集:ydata p_f_test 0 N False 1 N True 2 N True 3 N True 4 N False 5 N False 6 Y False 7 N False 8 Y False 9 N False 10 N True跨度>
-
@ImportanceOfBeingErnest 数据集好吗?
标签: python matplotlib seaborn