Python seaborn / matplotlib - показывать частоту в категориях легенд в sns.countplot () - PullRequest
0 голосов
/ 01 июля 2019

Я создал график с использованием sns.countplot с легендой, в которой используется параметр "hue".Я хотел бы показать частоту отсчета «Категория» на легенде вместе с меткой «Cross_Tab»:

dfData:

Category    Cross_Tab
Apple       Yes
Apple       No
Peach       Yes
Peach       No
Dog         Yes
Dog         Yes

Сюжет:

fig = sns.countplot(x="Category", hue="Cross_Tab", data=dfData,  order=dfData.Category.value_counts().index)

Легенда:

fig.legend(title="This is the Legend", loc='upper right')

Это просто показывает категории легенды:

"This is the Legend"
Yes
No 

Желаемый результат: легенда сюжета должна выглядеть следующим образом:

"This is the Legend"
Yes (n = 4)
No (n = 2)

После просмотра различных источников - я дошел до этого, но он не работает:

x = dfData.Cross_Tab.value_counts()
fig.legend("n=(%s)"%(x, ), title="This is the Legend", loc='upper right') 

1 Ответ

1 голос
/ 01 июля 2019

Вы должны воссоздать каждый ярлык индивидуально.

Что-то вроде этого, похоже, дает желаемый результат:

plt.figure()
ax = sns.countplot(x="Category", hue="Cross_Tab", data=df,  order=df.Category.value_counts().index)

h, l = ax.get_legend_handles_labels()
counts = df.Cross_Tab.value_counts().reindex(l)
l = [f'{yn} (n={c})' for yn,c in counts.iteritems()]
ax.legend(h,l, title="This is the legend")

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...