Проблема с добавлением процентов к вершине столбцов в графстве Seaborn - PullRequest
2 голосов
/ 28 марта 2019

На графическом графике мне нужно добавить проценты поверх столбцов. Я уже попробовал решение, данное в этом посте. Но я получаю проценты только за первый бар, а не за оставшийся. Есть ли способ, чтобы решить это? Фрагмент кода, как показано ниже:

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)

1 Ответ

1 голос
/ 29 марта 2019

На вашем графике есть столбец, у которого нет экстента, т. Е. get_height равен NaN.Вы должны явно поймать это дело.Возможно, вы хотите использовать 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...