occupation_counts = df.groupby(['income'])['occupation'].value_counts(normalize
    =True).rename('percentage').mul(100).reset_index().sort_values('occupation'
    )
p = sns.barplot(x='occupation', y='percentage', hue='income', data=
    occupation_counts)
_ = plt.setp(p.get_xticklabels(), rotation=90)
Счетная диаграмма Seaborn с нормализованной осью Y на группу