Seaborn FacetGrid PointPlot Добавить 1 линию сетки

Учитывая следующее:

import seaborn as sns
attend = sns.load_dataset("attention")
sns.set_style("whitegrid", {'axes.grid' : False,'axes.edgecolor':'none'})
g = sns.FacetGrid(attend, col="subject", col_wrap=5,
size=1.5, ylim=(0, 10))
ax = g.map(sns.pointplot, "solutions", "score", scale=.7)

Как видите, я удалил все линии сетки. Теперь я хотел бы добавить только одну горизонтальную линию сетки: при значении 5 на оси Y для каждого графика. Возможно ли это сделать? Я посмотрел здесь параметры словаря set_style, но не нашел ничего полезного.

Заранее спасибо!

1 ответ

Решение

Самый простой способ получить линию сетки в качестве помощника на графике - просто нарисовать линию на каждом графике.

for a in g.axes:
    a.axhline(5, alpha=0.5, color='grey')

В результате это в основном одна строка кода, и сюжет будет иметь нужную вам функцию. В результате вы должны вручную указать, куда идет каждая строка. (Я предполагаю, что вы хотите что-то более сложное в производственном коде). Что-то немного лучше будет

for a in g.axes:
    a.axhline(a.get_yticks()[1], alpha=0.5, color='grey')

что бы взять один тик и нарисовать линию для него.

Вы могли бы, вероятно, сделать что-то с человеком tick объекты, чтобы дать аналогичный эффект --- они могут быть доступны с a.yaxis.get_major_ticks()--- но я не смог использовать ни один из их методов для какого-либо эффекта.

Другие вопросы по тегам