У меня есть участок 2x2, состоящий из 4 гистограмм Seaborn. Я хотел бы добавить значение каждого бара каждого графика к вершине каждого бара.
Я могу добавить текст и вручную расположить его, что я пробовал, но я знаю, что это неэффективно, и должен быть лучший способ.
Кажется, я не могу понять, как найти решения, которые другие люди нашли для отдельных участников, для работы на участке.
Вот мой код:
Данные:
vis = pd.DataFrame({'Win %': [52.631579, 59.736842, 50.657895, 42.609649],
'Made Playoffs': [7,12,8,4],
'Won NFC Championship': [0,2,3,0],
'Won Super Bowl': [0,1,2,0]},
index=['Cowboys','Eagles','Giants','Redskins'])
vis = test.reset_index()
vis = test.rename(columns={'index':'Team'})
Заговор:
fig, ((ax1,ax2), (ax3,ax4)) = plt.subplots(2,2, sharex=True, sharey=False, figsize=(10,10))
fig.suptitle('NFC East Division Rivals, 2000-2018')
fig.subplots_adjust(wspace=0.5, hspace=0.3)
for ax in plt.gcf().get_axes():
for label in ax.get_xticklabels() + ax.get_yticklabels():
label.set_visible(True)
sns.set_style("darkgrid", {'font.sans-serif':'sans-serif', 'text.color':'#1e1e1e'})
# Win %
sns.barplot(x='Team',y='Win %',data=vis, palette=colors,
edgecolor=edges, linewidth=2, ax=ax1)
ax1.title.set_text('Average Win %')
ax1.set_ylabel('')
ax1.set_xlabel('')
for i, v in enumerate(df['Win %']):
ax1.text(v + 3, i +.25, str(v))
# Playoff Appearances
sns.barplot(x='Team', y='Made Playoffs', data=vis, palette=colors,
edgecolor=edges, linewidth=2, ax=ax2, estimator=sum)
ax2.title.set_text('Playoff Appearances')
ax2.set_ylabel('')
ax2.set_xlabel('')
# NFC Championships
sns.barplot(x='Team', y='Won NFC Championship', data=vis, palette=colors,
edgecolor=edges, linewidth=2, ax=ax3, estimator=sum)
ax3.title.set_text('NFC Championships Won')
ax3.set_ylabel('')
ax3.set_xlabel('')
ax3.set_yticks([0, 1, 2, 3])
# Super Bowls
sns.barplot(x='Team', y='Won Super Bowl', data=vis, palette=colors,
edgecolor=edges, linewidth=2, ax=ax4, estimator=sum)
ax4.title.set_text('Super Bowls Won')
ax4.set_ylabel('')
ax4.set_xlabel('')
ax4.set_yticks([0, 1, 2])
plt.show()
Я получаю ожидаемые субплоты, но я понятия не имею, как добавить значение "call out", отображающее значение бара над каждым и каждым столбцом в каждом и каждом подплоте.
Так, например, на столбчатой диаграмме «Средний процент выигрыша» должно быть «52,6%» выше бара «Ковбои», «59,7%» выше бара «Орлы» и т. Д.
Все оси Y тоже находятся в разных единицах.
Любая помощь очень ценится!