Как аннотировать парные графики морского дна?

У меня есть коллекция бинарных данных, из которых я создаю серию морских парных графиков. Поскольку все корзины имеют одинаковые метки, но не имена корзин, мне нужно аннотировать парные графики с именем корзины «n» ниже, чтобы я мог позже связать их с их корзинами.

import seaborn as sns
groups = data.groupby(pd.cut(data['Lat'], bins))
for n,g in groups:
    p = sns.pairplot(data=g, hue="Label", palette="Set2", 
                 diag_kind="kde", size=4, vars=labels)

Я отметил в документации, что seaborn использует или построен на основе matplotlib. Мне не удалось понять, как аннотировать легенду слева или указать заголовок над или под парными графиками. Может ли кто-нибудь привести примеры указателей на документацию о том, как добавить произвольный текст в эти три области графика?


person EBo    schedule 09.09.2015    source источник
comment
не могли бы вы предоставить данные, чтобы можно было воспроизвести эти примеры?   -  person baxx    schedule 08.04.2020
comment
к сожалению нет. Это был рабочий проект, и я не могу публиковать данные без разрешения. Кроме того, связанный проект закончился 3 или 4 года назад, и я сомневаюсь, что смогу найти его на данный момент.   -  person EBo    schedule 09.04.2020


Ответы (1)


После предложения mwaskom использовать matplotlib.text() (спасибо), я удалось заставить следующее работать, как ожидалось:

p = sns.pairplot(data=g, hue="Label", palette="Set2", 
             diag_kind="kde", size=4, vars=labels)
#bottom labels
p.fig.text(0.33, -0.01, "Bin: %s"%(n), ha ='left', fontsize = 15)
p.fig.text(0.33, -0.04, "Num Points: %d"%(len(g)), ha ='left', fontsize = 15)

и другой полезный функционал:

# title on top center of subplot
p.fig.suptitle('this is the figure title', verticalalignment='top', fontsize=20)

# title above plot
p.fig.text(0.33, 1.02,'Above the plot', fontsize=20)

# left and right of plot
p.fig.text(0, 1,'Left the plot', fontsize=20, rotation=90)
p.fig.text(1.02, 1,'Right the plot', fontsize=20, rotation=270)

# an example of a multi-line footnote
p.fig.text(0.1, -0.08,
     'Some multiline\n'
     'footnote...',
      fontsize=10)
person EBo    schedule 11.09.2015