v0.9.0 (2018年7月)#

这是一个重大发布,包含几个实质性的和长期期待的新功能。同时,主题和调色板的更新/修改提供了与 matplotlib 2.0 更好的兼容性,并且有一些值得注意的 API 变化。

新的关系图#

新增了三个全新的绘图函数:relplot()scatterplot()lineplot()。第一个是后两个的图层级接口,结合了它们与 FacetGrid。这些函数将 seaborn 分类绘图函数的高级、数据集导向的 API 引入到更一般的绘图(散点图和线图)中。

这些函数可以通过修改 huesize 和/或 style 语义来可视化两个数值变量之间的关系,同时映射多达三个额外的变量。这两个函数中的常见高级API实现方式不同。例如,scatterplot() 中的大小语义会缩放散点图点的面积,而在 lineplot() 中它会缩放线图线的宽度。API 是面向数据集的,这意味着在这两种情况下,您传递的是数据集中的变量,而不是直接指定要用于点面积或线宽的 matplotlib 参数。

关系型函数与现有的seaborn功能不同的另一种方式是,它们更好地支持使用数值变量用于``hue``和``size``语义。此功能可能会在未来的版本中传播到其他可以添加``hue``语义的函数;在本版本中尚未实现。

lineplot() 函数也支持统计估计,并且正在取代旧的 tsplot 函数,该函数仍然存在,但在未来的版本中将被标记为删除。lineplot() 与库中其余部分的 API 更加一致,并且通过独立修改大小和样式语义,在显示跨其他变量的关系时更加灵活。它还显著改进了对日期和时间数据的支持,这是 tsplot 中的一个主要痛点。代价是,一些在 tsplot 中用于表示不确定性的更深奥的选项(例如,颜色映射的 KDE 引导分布)在新函数中尚未实现。

有相当多的新文档详细解释了这些新功能,包括 API 参考 中各种选项的详细示例,以及更详细的 教程

这些功能应被视为“稳定测试版”状态。它们已经过彻底测试,但可能仍有一些未知的边缘情况需要发现。主要功能已经到位,但并非所有计划的功能都已实现。计划对某些元素进行改进,特别是默认图例,在本版本中略显粗糙。最后,一些默认行为(例如点/线大小的默认范围)可能在未来的版本中有所变化。

主题和调色板的更新#

seaborn 样式主题、上下文缩放和调色板进行了几项更改。总的来说,这些更改的目的是使 seaborn 样式与 matplotlib 2.0 中的样式更新 更加一致,并利用一些新的样式参数来更好地实现 seaborn 样式的一些方面。以下是更改列表:

  • 重新组织并更新了一些 axes_style()/plotting_context() 参数,以利用 matplotlib 2.0 更新中的改进。最大的变化涉及在“样式”规范中使用几个新参数,同时将以前实现相应美学的参数移动到“上下文”规范中。例如,对于 darkgrid 样式,轴脊和刻度现在默认关闭,而不是将其宽度/长度归零。这意味着这些元素的宽度/长度现在可以在不同的上下文中进行缩放。这种效果使得图表的外观更加一致,尤其是在较大的上下文中。这些更改仅包括对 1.x matplotlib 系列的最小支持。使用 matplotlib 1.5 但希望使用 seaborn 样式的用户可能希望通过 matplotlib 样式表接口 访问 seaborn 参数。

  • 更新了 seaborn 调色板(“deep”、“muted”、“colorblind”等)以对应新的 10 色 matplotlib 默认值。旧版调色板现在可在“deep6”、“muted6”、“colorblind6”等处获得。此外,为了更好的连贯性、美观性和可访问性,调整了几个单独的颜色。

  • 调用 color_palette() (或 set_palette()) 时,如果使用命名的定性调色板(即 seaborn 调色板、colorbrewer 定性调色板或 matplotlib 的 tableau 派生调色板)且未指定颜色数量,将返回调色板中的所有颜色。这意味着对于某些调色板,返回的列表长度将与之前版本中的不同。

  • 增强了 color_palette() ,使其接受以字符串形式参数化的cubehelix调色板规范,前缀为 "ch:" (例如 "ch:-.1,.2,l=.7")。请注意,关键字参数可以完整拼写或仅使用其首字母引用。通过附加 "_r" 可以反转调色板,与其他matplotlib色彩映射相同。此规范将被任何具有 palette= 参数的seaborn函数接受。

  • 稍微增加了 plotting_context() 中的基础字体大小,并增加了 "talk""poster" 上下文的缩放因子。

  • 调用 set() 现在将默认调用 set_color_codes() 来重新分配单字母颜色代码

API 变更#

一些函数已被重命名或其默认参数有所更改。

  • factorplot 函数已被重命名为 catplot()。新名称摒弃了原始的 R 风格术语,采用了与 pandas 和 seaborn 自身术语更为一致的名称。这一更改应该有助于更容易地发现 catplot(),并且应该使其角色更加清晰。factorplot 仍然存在,并将通过警告将其参数传递给 catplot()。它可能会最终被移除,但过渡将是尽可能渐进的。

  • factorplot 名称更改的另一个原因是,为了便于进行另一项修改,即 catplot() 的默认 kind 现在是 "strip"``(对应于 :func:`stripplot`)。这会绘制一个分类散点图,通常是一个更好的起点,并且与 :func:`relplot` 中的默认设置更加一致。如果你想要显示统计估计,旧的 ``factorplot 默认样式("point",对应于 pointplot())仍然可用。

  • lvplot 函数已重命名为 boxenplot()。用于命名原始类型图表的“letter-value”术语晦涩难懂,缩写为 lv 也没有帮助。新名称应通过描述其格式(它绘制多个箱形图,也称为“boxen”)来使图表更易被发现。与 factorplot 一样,lvplot 函数仍然存在,以提供相对平滑的过渡。

  • 在多图网格对象(FacetGridPairGridJointGrid)中,将 size 参数重命名为 height,以及使用这些对象的函数(factorplotlmplot()pairplot()jointplot()),以避免与 scatterplotlineplot 中使用的 size 参数冲突(这是使 relplot() 工作所必需的),同时也使参数的含义更加清晰。

  • pairplot() 中,当使用 "hue" 维度时,将默认的对角线图更改为使用 kdeplot()

  • 弃用了 JointGrid 的统计注释组件。该方法仍然可用,但将在未来版本中移除。

  • 在早期版本中已被弃用的两个旧函数,coefplotinteractplot,已从代码库中最终移除。

文档改进#

已经有一些努力用于改进文档。最大的变化是 库的介绍 已经完全重写,以提供更多的信息,特别是关键的示例。除了高层次的动机,介绍还涵盖了一些经常引起混淆的重要主题,如图级别和轴级别函数的区别,如何为在seaborn中使用而格式化数据集,以及如何自定义图形的外观。

其他改进贯穿始终,最显著的是对 分类教程 进行了彻底的重写。

其他小的增强和错误修复#

  • rugplot() 改为绘制 matplotlib 的 LineCollection 而不是多个 Line2D 对象,从而为大型数组提供了显著的加速。

  • 将默认的非对角线图更改为使用 散点图()。(注意,当前 "色调" 会绘制三个独立的散点图,而不是使用散点图函数的色调语义)。

  • 在使用 kdeplot() 处理两个变量时,更改了颜色处理方式。二维密度的默认色图现在遵循颜色循环,并且该函数可以使用 colorlabel 关键字参数,增加了灵活性,并避免了在使用多图网格时出现警告。

  • PairGrid 添加了 subplot_kws 参数,以增加灵活性。

  • PairGrid 中移除了一个特殊情况,该情况默认在对角轴上绘制堆积直方图。

  • 修复了 jointplot()/JointGridregplot(),使其现在接受列表输入。

  • 修复了在使用单行/列级别或使用 col_wrap=1FacetGrid 中的一个错误。

  • 修复了设置轴限制的函数,以便它们在matplotlib 2.0上保留自动缩放状态。

  • 在使用无法渲染画布的 matplotlib 后端(例如 PDF)时,避免了错误。

  • 更改了安装基础设施,以显式声明 pip 能够识别的依赖关系。这意味着 pip install seaborn 现在可以在空环境中工作。此外,依赖关系以严格的最低版本指定。

  • 更新了测试基础设施以使用 pytest 执行测试(尽管许多单独的测试仍然使用 nose 断言)。