Я знаю, что есть похожие ответы, такие как , этот , но этот относится к блокпосту Сиборна, и он не работает для меня с факторплотом Саборна. На простом факториале:
import seaborn as sns
tips = sns.load_dataset("tips")
means = tips.groupby(["sex","smoker","time"])["tip"].mean().values
means_labels = [str(int(s)) for s in means]
with sns.plotting_context("notebook",font_scale=2):
g = sns.factorplot(x="sex", y="total_bill", hue="smoker",\
col="time", data=tips, kind="box", size=6, aspect=.7)
Как можно добавить аннотацию (в приведенном выше примере означает_лабели ) под каждым полем, например:
![enter image description here](https://i.stack.imgur.com/TPAhx.png)
Как я уже сказал, я попытался использовать ответ выше, чтобы хотя бы попытаться определить положение каждого поля:
import matplotlib.pyplot as plt
ax = plt.gca()
pos = range(len(means))
for tick,label in zip(pos,ax.get_xticklabels()):
ax.text(pos[tick], means[tick] + 0.5, meanslabels[tick],
horizontalalignment='center', color='r', weight='semibold')
Но это производит:
![enter image description here](https://i.stack.imgur.com/A2cEe.png)
Я полагаю, это потому, что я передаю оси целого графика вместо осей "факториала". Но я не смог найти способ сделать это (если вместо ax = plt.gca () я использую, как в примере, ax = sns.factorplot (...) , я получаю сообщение об ошибке: AttributeError: модуль 'seaborn' не имеет атрибута 'gca' ).