set_context 和 set_style 的 seaborn rc 参数

roc*_*ves 7 python plot matplotlib seaborn

在设置绘图美观的教程中,有几种不同的方法:

  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")
Run Code Online (Sandbox Code Playgroud)

我还注意到,将我的字典放入set_style方法中不会执行任何操作,而至少对于这些参数,它仅适用于set_context. 这意味着它们各自具有可以编辑的互斥特征。然而,文档中的任何地方都没有概述这一点。

我想知道这三个函数中的哪一个将接受 的参数figsize。我也很想知道他们还接受哪些可以帮助我微调事情的内容。我的目标是尽可能频繁地专门使用seaborn 界面。我不需要对 matplotlib 提供的东西进行微调控制,而且常常觉得它很尴尬。

Wil*_*ler 10

答案似乎是“以上都不是”。此处列出了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",]
Run Code Online (Sandbox Code Playgroud)

另请注意,这set_style只是一个调用axes_style.

所以你必须使用matplotlib.rcParams,尽管如果典型的rcParams['figure.figsize'] = [16,10]语法不适合你当然可以创建你自己的样式