Может ли sns.countplot () отображать числа на графиках? - PullRequest
0 голосов
/ 22 мая 2018

Я использую набор данных MNIST и использовал sns.countplot() для построения изображений поездов, что дало enter image description here

Есть ли способ добавить значения баров где-нибудь?на каждом?внутри / внизу?В настоящее время я вижу фактические значения, используя print, и это мешает sns.countplot(), поскольку графики всегда выводятся перед печатью

Я использую код, очень похожий на this но я все еще не получаю аннотации.

# print and plot digit count
plt.figure(figsize=(12,5))
digit_count = sns.countplot(Y_train)
plt.title('Distribution of digits')

for d in digit_count.patches:
    digit_count.annotate('%{:.1f}'.format(d.get_height()), (d.get_x()+0.1, d.get_height()+50))

При печати значений из p.get_x() и p.get_height() я получаю правильные значения, но они не отображаются поверх столбцов

Попытка также добавить twinx ... также не помогло:

twin_table = digit_count.twinx()
twin_table.set_yticks(np.arange(0, 110, 10))

, который добавляет только вторичную ось Y (которую я также не знаю, как назвать ...):

enter image description here

1 Ответ

0 голосов
/ 04 октября 2018

библиотека и набор данных

import seaborn as sns, numpy as np
df = sns.load_dataset("iris")

# Basic countplot
ax = sns.countplot(x="species", y="sepal_length", data=df)

Рассчитать количество obs на группу и медиану для меток позиционирования

medians = df.groupby(['species'])['sepal_length'].median().values
nobs = df['species'].value_counts().values
nobs = [str(x) for x in nobs.tolist()]
nobs = ["n: " + i for i in nobs]

Добавить его на график

pos = range(len(nobs))
for tick,label in zip(pos,ax.get_xticklabels()):
   ax.text(pos[tick], medians[tick] + 0.03, nobs[tick], horizontalalignment='center', size='x-small', color='w', weight='semibold')

sns.plt.show ()

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