Проблема была немного нетривиальной, о которой я думал.Поскольку вы использовали hue="group"
, на графике есть две группы, и поэтому ax.collections
имеет длину 2. Поэтому, чтобы аннотации были в правильном порядке, я использовал индекс привязки j
.
Вы можете сжать смещения и значения DataFrame, которые хотите показать, и аннотировать их с помощью цикла for как
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
df = pd.DataFrame({'group':[0,1,1],'percentage':[0.5, .3,.7],'value_group':[1,2,3], 'count':[1, 10, 20]})
ax = sns.pointplot(x="value_group", y="percentage", hue="group", data=df)
j = 0 # <--- Index to keep rack of values
values = df['count'].values # <--- store the values in a variable for easy access
for c in ax.collections:
for i, of in zip(range(len(c.get_offsets())), c.get_offsets()):
ax.annotate(values[j], of, color='red', fontsize=24)
j += 1
ax.legend(loc=(0.8, 0.1))
plt.show()