Значения Seaborn пропущены на участке - PullRequest
0 голосов
/ 19 сентября 2019

Здравствуйте, я пытаюсь создать график с seaborn с помощью следующего кода, но я получил 0,00% значений на графике.

Высота и итоговые значения верны, но есть только 0,00 значения.Любая идея, пожалуйста?спасибо enter image description here

tmp = pd.crosstab(df_trans['card6'], df_trans['isFraud'], normalize='index') * 100
    tmp = tmp.reset_index()
    tmp.rename(columns={0:'NoFraud', 1:'Fraud'}, inplace=True)

plt.figure(figsize=(14,10))
plt.suptitle('Card 6 Distributions', fontsize=22)

plt.subplot(221)
g = sns.countplot(x='card6', data=df_trans)
# plt.legend(title='Fraud', loc='upper center', labels=['No', 'Yes'])
g.set_title("Card6 Distribution", fontsize=19)
g.set_ylim(0,500000)
g.set_xlabel("Card6 Category Names", fontsize=17)
g.set_ylabel("Count", fontsize=17)
for p in g.patches:
    height = p.get_height()

    g.text(p.get_x()+p.get_width()/2.,
            height + 3,
            '{:1.2f}%'.format(height/total*100),
            ha="center",fontsize=14) 


plt.subplot(222)

1 Ответ

0 голосов
/ 19 сентября 2019

Если вы работаете в Python 2,

height/total * 100

возвращает целое число.
Я предлагаю:

height/total * 100.0

РЕДАКТИРОВАТЬ: Я предлагаю:

float(height)/total * 100

Так что питон знает, что вы хотите плавать.Мой предыдущий ответ преобразовал число в число с плавающей точкой, но только когда было слишком поздно.Целочисленное деление, которое по умолчанию в Python 2, эквивалентно int(height/total) в Python 3. Чтобы изменить это поведение, вы также можете добавить:

from __future__ import division
...