Seaborn R c параметры для set_context и set_style - PullRequest
1 голос
/ 27 марта 2020

В руководстве по настройке эстетики ваших сюжетов есть несколько различных методов:

  1. set_style
  2. set_context
  3. axes_style

Каждый из них принимает словарь параметров ключевого слова rc. На каждой отдельной странице API для трех указанных выше функций указано:

rcdict, необязательно: Отображения параметров для переопределения значений в предустановленных словарях стиля seaborn. Это только обновляет параметры, которые считаются частью определения стиля .

Вернувшись на страницу учебника, под axes_style далее говорится, как именно вы можете посмотрите, какие параметры доступны для словаря rc для этой функции:

Если вы хотите увидеть, какие параметры включены, вы можете просто вызвать функцию без аргументов, что приведет к вернуть текущие настройки:

Однако при использовании этого в других функциях всегда возвращается None. Так, например, я использую следующую смесь matplotlib и seaborn для установки параметров:

mpl.rcParams['figure.figsize'] = [16,10]
viz_dict = {
    'axes.titlesize':18,
    'axes.labelsize':16,
} 
sns.set_context("notebook", rc=viz_dict)
sns.set_style("whitegrid")

Я также заметил, что помещение моего словаря в метод set_style ничего не дает, хотя, по крайней мере, для тех, параметры, это работает только в set_context. Это означает, что каждый из них имеет взаимоисключающие характеристики, которые можно редактировать. Однако это нигде не указано в документации.

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

1 Ответ

1 голос
/ 27 марта 2020

Казалось бы, ответ «ничего из вышеперечисленного». Действительные ключи для set_style и set_context перечислены здесь :

_style_keys = [
    "axes.facecolor", "axes.edgecolor",
    "axes.grid", "axes.axisbelow", "axes.labelcolor",

    "figure.facecolor", "grid.color", 
    "grid.linestyle", "text.color",

    "xtick.color", "ytick.color",
    "xtick.direction", "ytick.direction", 
    "lines.solid_capstyle",

    "patch.edgecolor", "patch.force_edgecolor",

    "image.cmap", "font.family", "font.sans-serif",

    "xtick.bottom", "xtick.top",
    "ytick.left", "ytick.right",

    "axes.spines.left", "axes.spines.bottom",
    "axes.spines.right", "axes.spines.top",]

_context_keys = [
    "font.size", "axes.labelsize",
    "axes.titlesize", "xtick.labelsize",
    "ytick.labelsize", "legend.fontsize",

    "axes.linewidth", "grid.linewidth",
    "lines.linewidth", "lines.markersize",
    "patch.linewidth",

    "xtick.major.width", "ytick.major.width",
    "xtick.minor.width", "ytick.minor.width",

    "xtick.major.size", "ytick.major.size",
    "xtick.minor.size", "ytick.minor.size",]

Также обратите внимание, что set_style - это просто вспомогательная функция, которая вызывает axes_style.

Так что вам придется использовать matplotlib.rcParams, хотя, если типичный синтаксис rcParams['figure.figsize'] = [16,10] не поддается изменению, вы, конечно, можете создать свой собственный стиль .

...