Seaborn Relplot: как контролировать расположение легенды и добавить заголовок

Возможно, это помогает кому-то, кто сталкивается с вопросом: Все условные рендеринги в действии Это статья обо всех различных вариантах условного рендеринга в React.

Выводы о том, когда использовать, какой условный рендеринг:

** if-else

  • - это самый основной условный рендеринг
  • beginner friendly
  • использовать, если отказаться от метода рендеринга, возвратив null

** тернарный оператор

  • используйте его над оператором if-else
  • , он более кратким, чем if-else

** logical & amp; & amp; & amp; оператор

  • использует его, когда одна сторона тройной операции возвращает null

** случай переключения

  • verbose
  • может быть только встроена с помощью функции self invoking
  • , избегайте ее, используйте enums вместо

** перечисления

  • идеально подходит для сопоставления различных состояний
  • идеально подходит для сопоставления нескольких условий

** многоуровневых / вложенных условных визуализаций

  • избегать их для удобочитаемости
  • разделить компоненты на более легкие компоненты с их собственной простой условной рендерингом
  • использовать HOCs

** HOC

  • использовать их для защиты от условного рендеринга.
  • компоненты могут сосредоточиться на своей основной цели

** внешних шаблонных компонентах

  • избегать их и быть комфортно с JSX и JavaScript

3
задан DavidG 16 January 2019 в 09:30
поделиться

1 ответ

Типичным способом изменения местоположения легенды в matplotlib является использование аргументов loc и bbox_to_anchor.
В Seaborn relplot возвращается объект FacetGrid. Для получения объекта легенды мы можем использовать _legend. Затем мы можем установить loc и bbox_to_anchor:

g = sns.relplot(...)

leg = g._legend
leg.set_bbox_to_anchor([0.5, 0.5])  # coordinates of lower left of bounding box
leg._loc = 2  # if required you can set the loc

Чтобы понять аргументы bbox_to_anchor, см. Что означает 4-элементный аргумент кортежа для 'bbox_to_anchor' в matplotlib?

То же самое можно применить к заголовку. Аргумент matplotlib - это suptitle. Но нам нужен объект фигуры. Таким образом, мы можем использовать

g.fig.suptitle("My Title")

Собрать все это вместе:

import seaborn as sns

dots = sns.load_dataset("dots")

# Plot the lines on two facets
g = sns.relplot(x="time", y="firing_rate",
            hue="coherence", size="choice", col="align",
            size_order=["T1", "T2"],
            height=5, aspect=.75, facet_kws=dict(sharex=False),
            kind="line", legend="full", data=dots)

g.fig.suptitle("My Title")

leg = g._legend
leg.set_bbox_to_anchor([1,0.7])  # change the values here to move the legend box
# I am not using loc in this example

enter image description here

[1123]

Обновить [ 1126]
Вы можете изменить положение заголовка, указав координаты x и y (координаты рисунка), чтобы он не перекрывал заголовки подзаговоров

g.fig.suptitle("My Title", x=0.4, y=0.98)

Хотя я бы, наверное, слегка сдвиньте субплоты вниз и оставьте название рисунка там, где оно используется:

plt.subplots_adjust(top=0.85)
0
ответ дан DavidG 16 January 2019 в 09:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: