matplotlib 在海运计数图中将百分比添加到条形顶部时的问题

soat7uwm  于 2023-05-18  发布在  其他
关注(0)|答案(1)|浏览(94)

在计数图中,我需要在条形图上添加百分比。我已经尝试了this文章中给出的解决方案。但我只得到第一个小节的百分比,其余小节没有。有没有办法解决这个问题?代码片段如下:

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)
ppcbkaq5

ppcbkaq51#

你的图中有一个没有范围的条形图,即。get_heightNaN。你必须明确地抓住这个案子。也许你想使用0

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
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()
    if np.isnan(height):
        height=0
    ax.text(p.get_x()+p.get_width()/2., height, '{:1.2f}'.format(height/total), ha="center")

plt.show()

相关问题