每个版本的新增功能

此页面包含有关每个新版本中所做更改的信息 seaborn . 每个版本还标记有来自的DOI Zenodo ,可用于引用库。

v0.12.0(未发布)

  • 制造 scipy 可选的依赖项和 pip install seaborn[all] 作为一种确保兼容 scipystatsmodels 类库。这对现有代码有一些小的影响,这在Github pull请求中进行了解释 (#2398

  • 跟随 NEP29 ,放弃了对python3.6的支持,并取消了库依赖项的最低支持版本。

  • 删除了几个以前不推荐使用的实用程序函数 (iqrpercentilespmf_histsort_df

v0.11.1(2020年12月)

https://zenodo.org/badge/DOI/10.5281/zenodo.4379347.svg

这是一个bug修复版本,建议v0.11.0上的所有用户升级。

  • Enhancement Reduced the use of matplotlib global state in the multi-grid classes (#2388).

  • Fix 恢复了对使用元组或数字键引用长格式字段的支持 data 对象 (#2386

  • Fix 修正了一个错误 lineplot() NAs传播到置信区间,有时从绘图中删除它 (#2273

  • Fix 修正了一个错误 PairGrid/pairplot() 当网格不是正方形且对角线不包含边缘图时,对角线轴为空 (#2270

  • Fix 修正了一个错误 PairGrid/pairplot() 当列名在 data 具有非字符串类型 (#2368

  • Fix 修复了当数据由布尔值或类似布尔值组成时忽略分类数据类型信息的错误 (#2379

  • Fix 修正了一个错误 FacetGrid 当只有正交轴共享时,内部记号标签将被隐藏 (#2347

  • Fix 修正了一个错误 FacetGrid 导致了一个错误 legend_out=False 已设置 (#2304

  • Fix 修正了一个错误 kdeplot() 在哪里? common_norm=True 被忽略,如果 hue 未分配 (#2378

  • Fix 修正了一个错误 displot() 何处 row_ordercol_order 未使用参数 (#2262

  • Fix Fixed a bug in PairGrid/pairplot() that caused an exception when using corner=True and diag_kind=None (#2382).

  • Fix 修正了一个错误 clustermap() 在哪里? annot=False 被忽略 (#2323

  • Fix 修正了一个错误 clustermap() 其中行/列颜色批注不能具有分类数据类型 (#2389

  • Fix 修正了一个错误 boxenplot() 何处 linewidth 参数被忽略 (#2287

  • Fix 提出一个信息更丰富的错误 PairGrid/pairplot() 当找不到变量来定义网格的行/列时 (#2382

  • Fix 提出一个信息更丰富的错误 clustermap() 如果行/列颜色对象有语义索引,但数据对象没有 (#2313

v0.11.0(2020年9月)

https://zenodo.org/badge/DOI/10.5281/zenodo.4019146.svg

这是一个主要的版本,有几个重要的新特性、对现有函数的增强以及对库的更改。新的绘图功能和更灵活的文档,更详细的描述和更新。

有关新功能的概述和更新指南,请参阅 this Medium post .

必需的关键字参数

API

大多数绘图函数现在要求使用关键字参数指定其所有参数。为了简化自适应,没有关键字参数的代码将触发 FutureWarning 在v0.11中。在将来的版本中(v0.12或v0.13,取决于发行节奏),这将成为一个错误。一旦关键字参数被完全执行,绘图函数的签名将被重新组织为接受 data 作为第一个也是唯一的位置参数 (#2052, #2081

配电功能现代化

分发模块已经彻底检修,使API现代化,并在现有函数中引入了几个新的函数和特性。这里介绍了一些新的特性 tutorial documentation 也被重写,作为一个很好的介绍功能。

新的绘图功能

Feature Enhancement

第一,三个新功能, displot()histplot()ecdfplot() 已添加 (#2157#2125#2141

图形级别 displot() 函数是各种分布图的接口(类似于 relplot()catplot() ). 它可以绘制单变量或双变量直方图、密度曲线、ECDF和地毯图 FacetGrid .

轴水平 histplot() 函数绘制具有许多特征的单变量或双变量直方图,包括:

  • 用一个 hue 语义的

  • 显示密度、概率或频率统计的标准化

  • 灵活的箱子尺寸参数化,包括离散变量的适当箱子

  • 添加KDE fit以显示所有bin统计的平滑分布

  • 对分类和日期时间变量直方图的实验支持。

轴水平 ecdfplot() 函数使用类似的接口绘制单变量经验累积分布函数。

对现有功能的更改

API Feature Enhancement Defaults

二是现有功能 kdeplot()rugplot() 已经彻底检修过了 (#2060, #2104

经过大修的函数现在与seaborn的其他函数共享一个公共API,它们可以通过将第三个变量映射为 hue 它们在许多其他方面得到了改进。github请求 (#2104 )对这些变化及其背后的动机有更详细的解释。

这必然是一个突破API的变化。位置变量的参数名现在是 xy ,旧名称已被弃用。在使用不推荐使用的API时,我们努力处理并发出警告,但强烈建议您仔细检查绘图。

此外,基于statsmodels的KDE计算也被删除。因为不同的参数之间有一些不一致(特别是, bwclipcut )默认情况下,每个非后端执行的绘图可能会导致不同的参数。只在statsmodels后端提供的对使用非高斯核的支持已经被删除。

其他新功能包括:

  • 表示多个密度的多个选项(使用 multiplecommon_norm (参数)

  • 加权密度估计(使用新的 weights 参数)

  • 更好地控制平滑带宽(使用新的 bw_adjust 参数)

  • 表示双变量密度的等高线的更有意义的参数化(使用 threshlevels (参数)

  • 对数空间密度估计(使用新的 log_scale 参数,或在打印前缩放数据轴)

  • 具有单个函数调用的“双变量”地毯图(通过分配两者 xy

贬抑

API

最后, distplot() 函数现在已正式弃用。它的特点已经包含在 displot()histplot() . 为逐步过渡作出了一些努力 distplot() 通过在中添加功能 displot() 和处理向后兼容性,但这被证明是太困难了。名称的相似性可能会在过渡期间造成一些混乱,这是令人遗憾的。

数据摄取的标准化和增强

Feature Enhancement Docs

处理输入数据的代码已经过重构和增强。在v0.11中,这段新代码对关系模块和分发模块生效;其他模块将被重构以在将来的版本中使用它 (#2071

这些更改对于大多数用例应该是透明的,尽管它们允许一些新特性:

  • 长格式数据的命名变量可以引用 pandas.DataFrame 或在多索引的情况下达到水平。以前,有必要打电话 pandas.DataFrame.reset_index() 在使用索引变量之前(例如,在groupby操作之后)。

  • relplot() 现在具有与axes级别函数相同的灵活性,可以接受长格式或宽格式的数据,也可以接受长格式模式的数据向量(而不是命名变量)。

  • 数据参数现在可以是Python dict 或者实现该接口的对象。这是宽格式数据的一个新特性。对于长格式数据,以前支持但没有文档记录。

  • 宽格式数据对象可以混合使用多种类型;非数字类型将在打印前删除。以前,这导致了一个错误。

  • 对于数据错误规范的其他实例,有更好的错误消息。

请参见《用户手册》的新章节 data formats 有关支持的内容的详细信息。

其他变化

文档改进

  • Docs 在用户指南中添加了两个新章节,其中一个章节概述了 types of functions in seaborn ,一个在讨论不同的 data formats seaborn明白。

  • Docs 扩大了 color palette tutorial 提供更多的色彩理论背景,更好地激发色彩在统计图形中的应用。

  • Docs 添加了更多信息到 installation guidelines 并简化了 introduction 页。

  • Docs 改进了seaborn文档内部以及seaborn和matplotlib文档之间的交叉链接。

支持主题

  • API 这个 set() 函数已重命名为 set_theme() 为了更清楚地了解它的作用。在可预见的未来, set() 将保留为别名,但建议更新代码。

关系图

  • Enhancement Defaults Reduced some of the surprising behavior of relational plot legends when using a numeric hue or size mapping (#2229):

    • 添加了一个“自动”模式(新的默认值),根据每个变量的唯一级别数在“简短”和“完整”图例之间进行选择。

    • 修改了“简短”图例的勾选算法,以显示最多6个值,而不显示超出数据限制的值。

    • 更改了图例标题的方法:当仅为一个变量分配了语义映射时,使用普通的matplotlib图例标题,而只有在定义了多个语义变量时,才使用添加带有字幕标签的不可见图例艺术家的旧方法。

    • 修改后的图例副标题将左对齐,并以默认图例标题字体大小绘制。

  • Enhancement Defaults Changed how functions that use different representations for numeric and categorical data handle vectors with an object data type. Previously, data was considered numeric if it could be coerced to a float representation without error. Now, object-typed vectors are considered numeric only when their contents are themselves numeric. As a consequence, numbers that are encoded as strings will now be treated as categorical data (#2084).

  • Enhancement Defaults Plots with a style semantic can now generate an infinite number of unique dashes and/or markers by default. Previously, an error would be raised if the style variable had more levels than could be mapped using the default lists. The existing defaults were slightly modified as part of this change; if you need to exactly reproduce plots from earlier versions, refer to the old defaults (#2075).

  • Defaults 怎么变的 scatterplot() 设置散点边缘的默认线宽。新的行为是根据点大小本身进行缩放(按绘图方式,而不是按点方式)。当点大小不变时,此更改还会略微减小默认宽度。套 linewidth=0.75 重现先前的行为。 (#2708

  • Enhancement Improved support for datetime variables in scatterplot() and lineplot() (#2138).

  • Fix 修正了一个错误 lineplot() 没有通过 linestyle 参数向下到matplotlib (#2095

  • Fix Adapted to a change in matplotlib that prevented passing vectors of literal values to c and s in scatterplot() (#2079).

分类图

  • Enhancement Defaults Fix Fixed a few computational issues in boxenplot() and improved its visual appearance (#2086):

    • 将计算框数的默认方法更改为``ku depth=“tukey”,作为以前的默认方法 (``k_depth="proportion" )基于一种启发式方法,该方法为小数据集生成过多的框。

    • 添加了指定特定框数的选项(例如。 k_depth=6 )或者绘制覆盖大部分数据点的方框 (k_depth="full"

    • 添加了一个新参数, trust_alpha ,以控制 k_depth="trustworthy" .

    • 改变了 boxenplot() 更接近 boxplot() . 值得注意的是,当边缘为白色时,薄框将保持可见。

  • Enhancement 允许 catplot() 在关闭轴共享时,在每个面的分类轴上使用不同的值(例如,通过指定 sharex=False ) (#2196

  • Enhancement 改进了分类图处理方向参数时产生的错误消息。

  • Enhancement 在中添加了明确的警告 swarmplot() 当超过5%的点在蜂群的“水槽”中重叠时 (#2045

多重绘图网格

  • Feature Enhancement Defaults A few small changes to make life easier when using PairGrid (#2234):

    • 添加了通过 legend 属性(也影响 FacetGrid

    • 这个 colorlabelhue 未使用。

    • 在边缘轴上打印之前,数据不再转换为numpy对象。

    • 只能指定其中一个 x_varsy_vars ,将所有变量用于未指定的维度。

    • 这个 layout_pad 每次调用 PairGrid.tight_layout() 方法。

  • Feature 增加了一个 tight_layout 方法到 FacetGridPairGrid ,运行 matplotlib.pyplot.tight_layout() 不受外部图例干扰的算法 (#2073

  • Feature 增加了 axes_dict 属性到 FacetGrid 用于对组件轴的命名访问 (#2046

  • Enhancement 制造 FacetGrid.set_axis_labels() 清除“内部”轴上的标签 (#2046

  • Feature 增加了 marginal_ticks 参数到 JointGrid 如果设置为 True ,将在边缘图的计数/密度轴上显示刻度 (#2210

  • Enhancement 改进 FacetGrid.set_titles() 具有 margin_titles=True ,以便在添加新标题之前删除代表原始行标题的文本 (#2083

  • Defaults 更改了的默认值 dropnaFalse 在里面 FacetGridPairGridJointGrid ,以及相应的函数。由于所有或几乎所有seaborn和matplotlib绘图函数都能很好地处理丢失的数据,因此此选项不再有用,但在某些边缘情况下会导致问题。将来可能会被否决。 (#2204

  • Fix Fixed a bug in PairGrid that appeared when setting corner=True and despine=False (#2203).

调色板

  • Docs 改善和现代化 color palettes chapter 海伯恩教程。

  • Feature 添加了两个新的感知一致的颜色贴图:“光斑”和“纹章”。新的彩色地图类似于“火箭”和“mako”,但它们的亮度范围缩小了。这使得它们非常适合于线或散点图的数值映射,这需要与极端的轴背景进行对比 (#2237

  • Enhancement Defaults Enhanced numeric colormap functionality in several ways (#2237):

  • Enhancement Added a rich HTML representation to the object returned by color_palette() (#2225).

  • Fix 修正了 "{{palette}}_d" 在这两种情况下修改反转颜色贴图和使用亮度渐变的正确方向的逻辑。

折旧和清除

  • Enhancement 删除了对BeautifulSoup的可选(且未记录)依赖项 (#2190get_dataset_names() .

  • API 贬低 axlabel 功能;用途 ax.set(xlabel=, ylabel=) 相反。

  • API 贬低 iqr 功能;用途 scipy.stats.iqr() 相反。

  • API 最终删除以前不推荐使用的 annotate 方法对 JointGrid ,以及相关参数。

  • API 最终拆除 lvplot 函数(以前不推荐使用的 boxenplot()

v0.10.1(2020年4月)

https://zenodo.org/badge/DOI/10.5281/zenodo.3767070.svg

这是一个小版本,它修复了自0.10.0以来发现的问题。

  • 修复了32位系统上的引导算法中出现的错误。

  • 修正了一个错误 regplot() 会在单例输入上崩溃。现在避免了崩溃,并且跳过了回归估计/绘图。

  • 修正了一个错误 heatmap() 在重新居中颜色映射时将忽略用户指定的under/over/bad值。

  • 修正了一个错误 heatmap() 在计算默认颜色映射限制时,将使用遮罩单元格中的值。

  • 修正了一个错误 despine() 尝试修剪matplotlib分类轴上的脊椎时会导致错误。

  • 适应matplotlib中的变化,该变化导致单群图出现问题。

  • 增加了 showfliers 参数到 boxenplot() 为了抑制异常数据点的绘制,匹配 boxplot() .

  • 避免了在将IQR为0的数据传递给 kdeplot() .

  • 增加了 legend.title_fontsizeplotting_context() 定义。

  • 弃用了几个不再在内部使用的实用程序函数 (percentilessig_starspmf_histsort_df

v0.10.0(2020年1月)

https://zenodo.org/badge/DOI/10.5281/zenodo.3629446.svg

这是与版本0.9.1同时发布的主要更新。它有所有相同的特性(和bug!)与0.9.1一样,但是依赖项有重要的更改。

最值得注意的是,对python2的所有支持现在都被取消了。对python3.5的支持也被取消了。Seaborn现在与Python3.6+严格兼容。

依赖PyData库的最低支持版本也有所增加,在某些情况下甚至大幅增加。虽然seaborn在保持与旧依赖的兼容性方面倾向于非常保守,但这在开发过程中造成了越来越大的痛苦。同时,这些库现在更易于安装。展望未来,seaborn很可能会与 Numpy community guidelines 版本支持。

此版本还删除了一些以前不推荐使用的功能:

  • 这个 tsplot 功能和 seaborn.timeseries 模块已被删除。记得吗 tsplot 被替换为 lineplot() .

  • 这个 seaborn.apionly 入口点已被删除。

  • 这个 seaborn.linearmodels 模块(以前重命名为 seaborn.regression )已删除。

期待

现在seaborn是一个Python3库,它可以利用 keyword-only arguments . 未来的版本很可能会引入这种语法,可能是一种破坏性的方式。作为指导,大多数seaborn函数的签名

func(x, y, ..., data=None, **kwargs)

何处 **kwargs 在函数中指定。今后可能有必要具体说明 data 以及所有具有显式 key=value 映射。这种风格在整个文档中已经使用了很长时间,正式的需求至少在下一个主要版本中才会被引入。添加此功能将使使用更现代的功能(例如,添加本机 hue 语义函数,如 jointplot()regplot() )并将允许控制新特性的参数位于相关的附近,使它们更容易被发现。

v0.9.1(2020年1月)

https://zenodo.org/badge/DOI/10.5281/zenodo.3629445.svg

这是一个小版本,有许多错误修复和对seaborn依赖项的修改。还有几个新特性。

这是seaborn的最终版本,将支持Python2.7或3.5。

新特点

  • 增加了对绘制的元素的排列的更多控制 clustermap(){{dendrogram,colors}}_ratiocbar_pos 参数。此外,默认的组织和缩放与不同的数字大小已得到改进。

  • 增加了 corner 选择权 PairGridpairplot() 没有二元轴上三角的网格。

  • 添加了为用于在多个绘图中定义误差线的引导程序播种随机数生成器的功能。相关职能部门现在有了 seed 参数,可以采用固定种子(通常为 int )或numpy随机数生成器对象(或更新的 numpy.random.Generator 或者更老的 numpy.random.mtrand.RandomState

  • 把“对角线”轴的概念推广到 PairGrid 共享x和y变量的任何轴。

  • PairGrid , the hue 变量现在从组成网格行和列的默认变量列表中排除。

  • 暴露了 layout_pad 参数在 PairGrid 并设置一个比matptlotlib设置的更小的默认值,以便在密集网格中更有效地利用空间。

  • 现在有可能强制对 hue 通过传递分类调色板的名称(例如。 "deep""Set2" ). 这是对(以前支持的)传递颜色列表/dict选项的补充。

  • 增加了 tree_kws 参数到 clustermap() 控制树状图中线条的属性。

  • 添加了将层次标签名传递给 FacetGrid legend,它还修复了 relplot() 当同一个标签出现在不同的语义中时。

  • 改进了对分类图中基于索引信息的分组观测的支持。

错误修复和调整

  • 避免了将单一数据传递给 kdeplot() ,而是发出警告。这使得 pairplot() 更健壮。

  • 修正了 dropna 在里面 PairGrid 设置为时从每个绘图中正确排除空数据点 True .

  • 修正了一个问题 regplot() 可能会干扰多打印matplotlib图形中的其他轴。

  • 语义变量 category 在关系图中,数据类型始终被视为分类的。

  • 避免了有关颜色规格的警告,因为 boxenplot() 在较新的matplotlibs上。

  • 适应matplotlib缩放轴边距方式的变化,这导致多次调用 regplot() 具有 truncate=False 逐步扩展x轴限制。因为当前在matplotlib中自动缩放的工作方式有限制,所以 truncate 在seaborn也被改为 True .

  • 当色调/大小数据被推断为数字但存储为字符串数据类型时,关系图不再出错。

  • 关系图现在认为只有一个值(可以解释为布尔值(0或1))的语义是分类的,而不是数字的。

  • 关系图现在可以处理 sizes 正确地。

  • 修复了中的问题 pointplot() 在matplotlib中,缺少色调变量的级别会在最近的更新后导致异常。

  • 修正了一个错误,当设置旋转的x记号标签上 FacetGrid .

  • 修正了一个错误,当只有一个变量是一个变量时,值将被排除在分类图之外 Series 使用非默认索引。

  • 修复了使用时的错误 Series 对象作为的参数 x_partialy_partial 在里面 regplot() .

  • 修正了通过 norm 对象和在中使用颜色注释 clustermap() .

  • 修复了注释没有重新排列以匹配中的群集的错误 clustermap() .

  • 修复了尝试呼叫时的错误 set() 为调色板指定颜色列表时。

  • 修复了将颜色代码short hands重置为matplotlib默认值时的错误。

  • 避免了即将到来的应用程序中更严格的类型检查带来的错误 numpy 变化。

  • 避免了错误/警告 lineplot() 当绘制具有空级别的分类时。

  • 允许 colors 传递给二元变量 kdeplot() .

  • 标准化自定义调色板函数的输出格式。

  • 修正了一个错误,在关系图中,数字变量的图例可能会显示大量的小数位。

  • 提高了对分布图中缺失值的鲁棒性。

  • 可以指定 FacetGrid 使用matplotlib关键字参数的图例。

v0.9.0(2018年7月)

https://zenodo.org/badge/DOI/10.5281/zenodo.1313201.svg

这是一个主要的发行版,有几个实质性的和长期以来所期望的新特性。此外,还对主题和调色板进行了更新/修改,使其与matplotlib 2.0保持了更好的一致性,并对API进行了一些显著的更改。

新关系图

添加了三个全新的绘图功能: relplot()scatterplot()lineplot() . 第一个是后两个的图形级接口,它将它们与 FacetGrid . 这些函数将seaborn分类绘图函数的面向数据集的高级API引入到更通用的绘图(散点图和线图)。

这些函数可以可视化两个数值变量之间的关系,同时通过修改 huesize 和/或 style 语义学。通用的高级API在这两个函数中的实现方式不同。例如,在语义上 scatterplot() 缩放散点图点的面积,但以 lineplot() 它可以缩放线条打印线条的宽度。API是面向数据集的,这意味着在这两种情况下,都在数据集中传递变量,而不是直接指定要用于点面积或线宽的matplotlib参数。

关系函数与现有seaborn功能的另一个不同之处在于,它们更好地支持使用数字变量来实现 huesize 语义学。此功能可以传播到可以添加 hue 未来版本中的语义;此版本中没有。

这个 lineplot() 该函数还支持统计估计,并正在取代旧的 tsplot 函数,该函数仍然存在,但在将来的版本中标记为要删除。 lineplot() 通过独立修改大小和样式语义,可以更好地与库的其余部分的API保持一致,并且在显示跨其他变量的关系方面更加灵活。它还大大改善了对日期和时间数据的支持,这是数据处理中的一个主要痛苦因素 tsplot . 其代价是 tsplot 新函数中没有实现表示不确定性的方法(例如引导分布的颜色映射KDE)。

有相当多的新文档更详细地解释了这些新函数,包括中各种选项的详细示例 API reference 还有更冗长的 tutorial .

这些函数应该被认为是稳定的beta状态。他们已经过彻底的测试,但一些未知的角落案件可能仍有待发现。主要功能已经到位,但并非所有计划的功能都已实现。有些元素,特别是默认的图例,在这个版本中有点粗糙。最后,一些默认行为(例如点/线大小的默认范围)可能会在将来的版本中有所改变。

主题和选项板的更新

对seaborn样式的主题、上下文缩放和调色板进行了一些更改。总的来说,这些变化的目的是使海本风格更符合 style updates in matplotlib 2.0 并利用一些新的样式参数来更好地实现seaborn样式的某些方面。以下是更改列表:

  • 重新组织和更新了一些 axes_style()/plotting_context() 参数以利用matplotlib 2.0更新中的改进。最大的变化涉及到在“样式”规范中使用几个新参数,同时将用于实现相应美学的参数移动到“上下文”规范中。例如,轴脊椎和记号现在处于禁用状态,而不是将其宽度/长度归零以用于暗网格样式。这意味着这些元素的宽度/长度现在可以在不同的上下文中进行缩放。其效果是情节更具凝聚力,尤其是在更大的背景下。这些更改只包括对1.x matplotlib系列的最小支持。如果用户仍停留在matplotlib 1.5上,但希望使用seaborn样式,则可能希望使用可通过访问的seaborn参数 matplotlib stylesheet interface .

  • 更新了seaborn调色板(“deep”、“muted”、“colorbind”等),以符合新的10色matplotlib默认值。传统的调色板现在有“deep6”、“muted6”、“colorbind6”等。此外,为了更好的一致性、美观性和可访问性,对一些单独的颜色进行了调整。

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

  • 增强 color_palette() 以字符串形式接受cubehelix调色板的参数化规范,前缀为 "ch:" (例如) "ch:-.1,.2,l=.7" ). 请注意,关键字参数只能用它们的第一个字母拼写或引用。反转调色板是通过附加 "_r" ,与其他matplotlib颜色贴图一样。本规范将被任何具有 palette= 参数。

  • 稍微增加了中的基本字体大小 plotting_context() 并增加了 "talk""poster" 语境。

  • 调用 set() 我现在打电话来 set_color_codes() 默认情况下重新指定单字母颜色代码的步骤

API更改

一些函数已重命名或对其默认参数进行了更改。

  • 这个 factorplot 函数已重命名为 catplot() . 这个新名字抛弃了原来的R形词尾变化的术语,使用了一个更符合熊猫和seaborn本身术语的名字。这一改变有望使 catplot() 更容易发现,它应该更清楚它的作用是什么。 factorplot 仍然存在并将把它的论点传递给 catplot() 带着警告。它可能最终会被移除,但过渡将是尽可能渐进的。

  • The other reason that the factorplot name was changed was to ease another alteration which is that the default kind in catplot() is now "strip" (corresponding to stripplot()). This plots a categorical scatter plot which is usually a much better place to start and is more consistent with the default in relplot(). The old default style in factorplot ("point", corresponding to pointplot()) remains available if you want to show a statistical estimation.

  • 这个 lvplot 函数已重命名为 boxenplot() . “字母值”这一术语被用来命名原始类型的情节是晦涩难懂的,缩写为 lv 没有任何帮助。新名称应该通过描述其格式(它绘制多个框,也称为“boxen”)使绘图更易于发现。与…一样 factorplot , the lvplot 功能仍然存在,以提供相对平稳的过渡。

  • 更名为 size 参数到 height 在多重打印栅格对象中 (FacetGridPairGridJointGrid )以及使用它们的函数 (factorplotlmplot()pairplot()jointplot() )以避免与 size 中使用的参数 scatterplotlineplot (必要时) relplot() 功),也使参数的含义更加清晰。

  • 更改了中的默认对角线图 pairplot() 使用func:kdeplot`时 `"hue"`` 使用维度。

  • 已弃用的统计批注组件 JointGrid . 该方法仍然可用,但将在将来的版本中删除。

  • 在早期版本中不推荐使用的两个旧函数, coefplotinteractplot ,已从代码库中最终删除。

文档改进

在改进文件方面已经做了一些努力。最大的变化是 introduction to the library 已经完全重写,以提供更多的信息和关键的例子。除了高层次的动机,介绍还涵盖了一些重要的话题,往往是混淆的来源,如数字级和轴级函数之间的区别,数据集应如何格式化,以用于seaborn,以及如何自定义绘图的外观。

在整个过程中还进行了其他改进,最显著的是对 categorical tutorial .

其他小增强和错误修复

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

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

  • 使用时更改颜色处理 kdeplot() 有两个变量。2D密度的默认颜色贴图现在遵循颜色循环,函数可以使用 colorlabel kwargs,增加了更多的灵活性,避免了使用多打印网格时出现警告。

  • 增加了 subplot_kws 参数到 PairGrid 以获得更大的灵活性。

  • 删除了 PairGrid 默认为在对角线轴上绘制堆叠的直方图。

  • 固定的 jointplot()/JointGridregplot() 所以他们现在接受列表输入。

  • 修正了一个错误 FacetGrid 使用单行/列级别或使用 col_wrap=1 .

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

  • 避免了在使用不能呈现画布的matplotlib后端(例如PDF)时出错。

  • 将安装基础结构更改为以 pip 意识到。这意味着 pip install seaborn 将在空环境中工作。此外,依赖项是用严格的最小版本指定的。

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

v0.8.1(2017年9月)

https://zenodo.org/badge/DOI/10.5281/zenodo.883859.svg
  • 在中添加了警告 FacetGrid 在传递分类图函数而不指定 order (或) hue_order 什么时候? hue ,这可能会生成不正确的绘图。

  • 改进了之间的兼容性 FacetGridPairGrid 以及交互式matplotlib后端,以便在使用时图例不再保留在图形中 legend_out=True .

  • 更改了要使用的带有小绘图元素的分类绘图函数 dark_palette() 而不是 light_palette() 从指定颜色生成顺序调色板时。

  • 改进的鲁棒性 kdeplot()distplot() 不到两次观测的数据。

  • 修正了一个错误 clustermap() 使用时 yticklabels=False .

  • 修正了一个错误 pointplot() 如果正好画了三个点,颜色就错了。

  • 修正了一个错误 pointplot() 其中缺少数据的图例项显示为空标记。

  • 修正了一个错误 clustermap() 在注释主热图和显示类别颜色时引发错误的位置。

  • 修正了一个错误 clustermap() 行标签重叠时未正确旋转的位置。

  • 修正了一个错误 kdeplot() 当绘制多个密度时,密度轴上的最大限制未更新。

  • 改进了与熊猫未来版本的兼容性。

v0.8.0(2017年7月)

https://zenodo.org/badge/DOI/10.5281/zenodo.824567.svg
  • 导入seaborn时,将不再应用默认样式。现在有必要显式调用 set() 或一个或多个 set_style()set_context()set_palette() . 相应地 seaborn.apionly 模块已被弃用。

  • 改变了 heatmap() (延期) clustermap() )当绘制不同的数据集时(即 center 参数)。而不是将颜色贴图的上下限扩展为围绕 center 值时,将修改颜色贴图,使其中间颜色与 center . 这意味着将不使用colormap的整个范围(除非指定了数据或属性) vminvmax 是对称的),但色条的上限和下限将对应于数据的范围。请参阅Github pull请求 (#1184) 行为的例子。

  • 删除了中发散数据的自动检测 heatmap() (延期) clustermap() ). 如果要将colormap视为发散的(请参见上文),现在需要指定 center 价值观。未指定颜色映射时,指定 center 仍会将默认值更改为更适合显示发散数据的值。

  • 添加了四个新的颜色映射,使用 viscm 感知的一致性。两个“发散”和“发散”地图(“发散”和“发散”地图)。这些colormaps在seaborn import上向matplotlib注册,可以在中访问colormap对象 seaborn.cm 命名空间。

  • 更改了默认值 heatmap() 彩色地图是“火箭”(在连续数据的情况下)或“冰火”(在发散数据的情况下)。请注意,此更改使亮度渐变的方向与以前的默认值相反。虽然这一更改可能会造成混乱和破坏,但它可以更好地将seaborn默认值与新的matplotlib默认colormap(“viridis”)对齐,并可以更好地将“热”映射的语义与colormap的外观对齐。

  • 补充 "auto" 作为中记号标签的(默认)选项 heatmap()clustermap() . 这将尝试估计在文本对象不重叠的情况下可以标记多少个记号,这将提高较大矩阵的性能。

  • 增加了 dodge 参数到 boxplot()violinplot()barplot() 允许使用 hue 不改变绘图元素的位置或宽度,如 hue varible未嵌套在主分类变量中。

  • 相应地 split 参数用于 stripplot()swarmplot() 已重命名为 dodge 与其他范畴功能的一致性(以及与 split 在里面 violinplot()

  • 增加了绘制双变量色条的功能 kdeplot()cbar 参数(及相关) cbar_axcbar_kws 参数)。

  • 增加了在大多数统计函数中使用误差条来显示标准差而不是bootstrap置信区间的能力 ci="sd" .

  • 允许特定于边的偏移 despine() .

  • 地物大小不再是seaborn plotting上下文参数的一部分。

  • 对所使用的垃圾箱数量加以限制 jointplot() 对于 type=="hex" 避免参考规则规定太多时挂起。

  • 在中更改了y轴 heatmap() . 不再在内部反转数据行,而是反转y轴。这可能会影响以数据坐标绘制在热图顶部的代码。

  • 关闭中的树状图轴 clustermap() 而不是将背景色设置为白色。

  • 新的matplotlib定性调色板(例如“tab10”)现在可以正确处理。

  • 一些模块和函数已在内部重新组织;对使用 seaborn 命名空间。

  • 向添加了弃用警告 tsplot 函数,用于指示在将来的版本中,它将被删除或替换为经过实质性修改的版本。

  • 这个 interactplotcoefplot 函数已被正式弃用,并将在将来的版本中删除。

v0.7.1(2016年6月)

https://zenodo.org/badge/DOI/10.5281/zenodo.54844.svg
  • 添加了在绘制的误差线上设置“上限”的功能 barplot()pointplot() (以及, factorplot ). 此外,现在可以控制误差线的线宽。这些变化涉及到新的参数 capsizeerrwidth . 见 github pull request (#898) 例如用法。

  • 改进了行和列的颜色显示 clustermap() . 现在可以为这些元素传递Pandas对象,如果可能,Pandas对象中的语义信息将用于向绘图添加标签。使用熊猫对象时,颜色数据将根据索引而不是位置与主热图匹配。这更准确,但如果当前代码假定位置匹配,则可能会导致不同的结果。

  • 改进了确定中注释颜色的亮度计算 heatmap() .

  • 这个 annot 参数 heatmap() 现在除了接受布尔值外,还接受一个矩形数据集。如果传递了数据集,则其值将用于注释,而主数据集将用于热图单元格颜色。

  • 修正了一个错误 FacetGrid 在使用 col_wrap 与失踪 col 水平。

  • 可以将记号定位器对象传递给 heatmap() 色条。

  • 可以使用不同的样式(例如,step)来 PairGrid 有多个色调级别时的直方图。

  • 修正了基于scipy的单变量核密度带宽计算中的一个错误。

  • 这个 reset_orig() 函数(扩展为导入 seaborn.apionly )将matplotlib rcParams重置为导入seaborn本身时的值,这样可以更好地处理jupyter笔记本后端更改的rcParams。

  • 从顶层删除了一些对象 seaborn 命名空间。

  • 改进的unicode兼容性 FacetGrid .

v0.7.0(2016年1月)

https://zenodo.org/badge/DOI/10.5281/zenodo.45133.svg

这是0.6的主要版本。主要的新功能是 swarmplot() 它实现了beesarm方法来绘制分类散点图。为了与新版本的依赖项兼容,还进行了一些性能改进、错误修复和更新。

  • 增加了 swarmplot() 函数,绘制蜂群图。这些是分类散点图,类似于 stripplot() 但为了避免重叠点,选择了分类轴上点的位置。看到了吗 categorical plot tutorial 更多信息。

  • 改变了一些 stripplot() 默认值更接近 swarmplot() . 点现在稍微小一些,没有轮廓,并且在使用时默认不拆分 hue . 这些设置可通过函数参数进行自定义。

  • 在确定附加类别时添加的附加规则的顺序。现在,当在分类角色中使用数字变量时,默认行为是对变量的唯一级别进行排序(即它们将以正确的数字顺序排列)。这仍然可以由适当的 {{*_}}order 和一个参数 category 即使级别是严格数字,数据类型仍将遵循类别顺序。

  • 怎么变的 stripplot() 使用时绘制点 hue 嵌套 split=False 所以不同的 hue 水平不是严格地画在彼此的上面。

  • 提高中大型树状图的性能 clustermap() .

  • 补充 font.size 打印上下文定义,以便 plt.text 将适当缩放。

  • 修正了一个错误 clustermap() 什么时候? fastcluster 未安装。

  • 修复了中zscore计算中的一个错误 clustermap() .

  • 修正了一个错误 distplot() 其中,有时默认的箱数不是整数。

  • 修正了一个错误 stripplot() 图例项不会出现在 hue 如果在第一组点中没有观察到,则为水平。

  • 热图色条现在被栅格化,以便在矢量图中获得更好的性能。

  • 添加了一些matplotlib boxplot问题的解决方法,例如异常点的奇怪颜色。

  • 为violinplot边丢失或具有随机颜色的问题添加了解决方法。

  • 添加了一个解决问题的方法,其中只有一个 heatmap() 单元格将在一些matplotlib后端进行注释。

  • 修正了matplotlib新版本中的一个错误,即颜色映射将错误地应用于只有三个观测值的散点图。

  • 更新了seaborn以与matplotlib 1.5兼容。

  • 在使用小部件的函数中增加了对各种IPython(和Jupyter)版本的兼容性。

v0.6.0(2015年6月)

https://zenodo.org/badge/DOI/10.5281/zenodo.19108.svg

这是0.5的主要版本。此版本的主要目标是统一分类图的API,这意味着在一些旧函数中有一些相对较大的API更改。有关这些更改的详细信息,请参见下文,这些更改可能会破坏为seaborn的旧版本编写的代码。还有一些新功能 (stripplot()countplot() ),对现有函数的大量增强,以及错误修复。

此外,文档已经为0.6版本进行了完全的修改和扩展。现在,每个函数的API docs页面都有多个示例,其中嵌入了显示如何使用各种选项的绘图。这些页面应该被认为是示例中最全面的资源,教程页面现在已经简化,面向各种功能的更高级别概述。

分类图的更改和更新

在版本0.6中,“分类”绘图已与公共API统一。这类新函数将显示一个数值变量和一个或两个分类变量之间关系的绘图组合在一起。这包括显示每个箱子中数值变量分布的绘图 (boxplot()violinplot()stripplot() )以及在每个箱子内应用统计估计的绘图 (pointplot()barplot()countplot() ). 有一个新的 tutorial chapter 介绍了这些功能。

分类函数现在每个都接受相同格式的输入数据,并且可以以相同的方式调用。它们可以使用长格式或宽格式数据进行绘图,并且可以垂直或水平绘制。使用长格式数据时,根据输入数据的类型推断出绘图的方向。此外,所有函数本机采用 hue 变量添加第二层分类。

使用(在某些情况下是新的)API,这些函数都可以由 FacetGrid . 然而, factorplot 现在还可以创建这些类型的绘图的切面验证,因此在大多数情况下不需要使用 FacetGrid 直接。默认情况下, factorplot 绘制点图,但这由 kind 参数。

以下是统一这些API过程中发生的变化的详细信息:

  • 改变到 boxplot()violinplot() 可能是最具破坏性的。这两个函数在它们可以接受的数据类型方面都保持向后兼容性,但是语法已经更改为与其他seaborn函数更相似。这些函数现在通过 x 和/或 y 在传递给新对象的长格式数据帧中作为数据向量或变量名的参数 data 参数。您仍然可以将宽格式的数据帧或数组传递给 data ,但它不再是第一个位置参数。看到了吗 github pull request (#410) 有关这些更改及其背后的逻辑的更多信息。

  • AS pointplot()barplot() 现在可以用y轴上的主分类变量 x_order 参数已重命名为 order .

  • 增加了一个 hue 参数 boxplot()violinplot() ,它允许通过第三个分类变量对绘图元素进行嵌套分组。为了 violinplot() ,这种嵌套也可以通过分裂小提琴时,有两个层次的 hue 变量(使用 split=True ). 为了使此功能可行,已取消指定在数据坐标中绘制绘图的位置的功能。这些绘图现在在设定的位置绘制,如(和相同) barplot()pointplot() .

  • 增加了一个 palette 参数到 boxplot()/violinplot() . 这个 color 参数仍然存在,但不再承担接受seaborn调色板名称的双重责任。 palette 替代物 color 这样就可以和 FacetGrid .

除了这些API更改外,还对plotting函数进行了以下更改/增强:

  • 类别排序的默认规则已更改。现在,绘图不再自动对类别级别进行排序,而是按照级别在输入数据中的显示顺序(即 Series.unique() ). 使用打印时可以指定顺序 orderhue_order 参数。此外,当变量是具有“分类”数据类型的对象时,将从数据对象推断类别顺序。这种变化也会影响 FacetGridPairGrid .

  • 增加了 scalescale_hue 参数到 violinplot() . 这些控制小提琴的宽度是如何缩放的。默认值为 area ,这与小提琴以前的作曲方式不同。使用 scale='width' 以获得旧的行为。

  • 使用了不同的样式 box 一种内部情节 violinplot() ,它显示了除四分位数外的晶须范围。使用 inner='quartile' 以得到旧的风格。

新的绘图功能

  • 增加了 stripplot() 函数,它绘制一个散点图,其中一个变量是分类的。此绘图的API与 boxplot()violinplot() . 它是有用的,无论是在它自己和组成时,这些其他类型的绘图显示观察和潜在的分布。

  • 增加了 countplot() 函数,它使用条形图表示来显示一个或多个分类箱中的变量计数。这将取代旧的调用方法 barplot() 没有数字变量。

其他添加和更改

  • 这个 corrplot() 以及潜在的 symmatplot() 函数已被弃用,取而代之的是 heatmap() ,它更加灵活和健壮。这两个函数在版本0.6中仍然可用,但在将来的版本中它们将被删除。

  • 增加了 set_color_codes() 函数和 color_codes 参数 set()set_palette() . 这将更改matplotlib中速记颜色代码(即“b”、“g”、“k”等)的解释,以使用其中一个命名的seaborn调色板(即“deep”、“muted”等)中的值。这使得直接将matplotlib函数与seaborn imported一起使用时更容易获得更统一的外观。这可能会破坏现有绘图,因此默认情况下不会发生。这可能在未来发生变化。

  • 这个 color_palette() 当传递到函数中时,该函数不再修剪长度超过6种颜色的选项板。

  • 增加了 as_hex 方法返回调色板对象,以返回十六进制代码列表而不是rgb元组。

  • jointplot() 现在将其他关键字参数传递给用于在关节轴上绘制绘图的函数。

  • 更改了默认值 linewidths 在里面 heatmap()clustermap() 设置为0,以便较大的矩阵正确绘制。这个参数仍然存在,可以用来获得热图中划分每个单元格的旧效果(旧的默认值) linewidths 为0.5)。

  • heatmap()clustermap() 现在自动为缺少的值使用一个掩码,该掩码以前是用colormap per default的“under”值显示的 plt.pcolormesh 行为。

  • 增加了 seaborn.crayons 词典和词典 crayon_palette() 函数定义120框中的颜色(!)属于 Crayola crayons .

  • 增加了 line_kws 参数到 residplot() 在使用时更改下线的样式。

  • 添加了开放式 **kwargsadd_legend 方法对 FacetGridPairGrid ,在调用 FigureAxes .

  • 增加了 gridspec_kws 参数到 FacetGrid ,它允许控制网格中各个面的大小,以强调某些绘图或说明变量范围的差异。

  • 交互式调色板小部件现在显示一个连续的颜色条,而不是一个离散的调色板,当 as_cmap 是True。

  • 默认轴大小 pairplot()PairGrid 现在稍微小了一点。

  • 增加了 shade_lowest 参数到 kdeplot() 它将最低轮廓级别的alpha设置为0,使得在同一轴上绘制多个双变量分布更加容易。

  • 这个 height 参数 rugplot() 现在被解释为轴大小的函数,并对该轴上的数据比例变化保持不变。默认情况下,地毯线也会稍微窄一些。

  • 添加了一个陷阱 distplot() 计算默认箱子数时。对于高度倾斜的数据,它现在将使用sqrt(n)bin,以前引用规则将返回“无限”bin并在matplotlib中引起异常。

  • 将上限(50)添加到用于 distplot() 直方图。这将有助于避免将错误与某些类型的数据集混淆,因为这些数据集严重违反了用于获取默认箱数的引用规则的假设。通过特定数量的垃圾箱时不应用天花板。

  • 可以传递给各个属性字典 plt.boxplot 现在应用在seaborn重新样式化之后,以允许完全定制。

  • 增加了一个 savefig 方法到 JointGrid 默认为紧边界框,以便使用此类更容易保存图形,并将紧边界框设置为 savefig 方法。

  • 现在可以将整数传递给 xticklabelsyticklabels 参数 heatmap() (以及, clustermap() ). 这将使绘图使用从数据推断出的记号标签,但只能每隔 n 标签,在哪里 n 是你通过的号码。这有助于将较大的矩阵可视化,并对数据帧的行或列进行合理的排序。

  • 补充 "figure.facecolor" 设置样式参数,并将默认值设置为白色。

  • 这个 load_dataset() 函数现在在下载数据集后在本地缓存它们,并在后续调用中使用本地副本。

错误修复

  • 修复了中的错误 clustermap() 未使用树状图重新组织遮罩和指定标签。

  • 修正了一个错误 FacetGridPairGrid 这会导致错误的图例标签,当 hue 变量出现在 hue_order 但数据里没有。

  • 修正了一个错误 FacetGrid.set_xticklabels()FacetGrid.set_yticklabels() 什么时候? col_wrap 正在被使用。

  • 修正了一个错误 PairGrid 何处 hue_order 参数被忽略。

  • 修复了中的两个错误 despine() 在尝试修剪轴反转或没有刻度的绘图上的脊椎时,这会导致错误。

  • 改进了对 margin_titles 选择权 FacetGrid ,现在可以与图例一起使用。

v0.5.1(2014年11月)

这是一个错误修复版本,包括matplotlib 1.4.2中一个问题的解决方法,以及0.5.0中新函数中两个错误的修复方法。

  • 针对matplotlib 1.4.2中的一个错误实现了一种解决方法,该错误在设置seaborn样式时阻止绘制点标记。看到这个了吗 github issue 更多信息。

  • 修正了一个错误 heatmap() 其中掩码相对于数据垂直反转。

  • 修正了一个错误 clustermap() 当使用侧边颜色的嵌套列表时。

v0.5.0(2014年11月)

这是0.4的主要版本。亮点包括绘制热图的新功能,可能是在应用聚类算法发现结构化关系时。这些函数由新的自定义colormap函数和一整套IPython小部件补充,这些小部件允许交互式选择colormap参数。调色板教程已经重写,以涵盖这些新的工具,更一般地提供如何在可视化中使用颜色的指导。还有一些较小的更改和错误修复。

绘图功能

  • 增加了 heatmap() 通过对值进行颜色编码来可视化数据矩阵的函数。有关更多信息,请参阅文档。

  • 增加了 clustermap() 用于聚类和可视化数据矩阵的函数,具有按颜色标记单个行和列的选项。有关更多信息,请参阅文档。这项工作由奥尔加·博特文尼克领导。

  • lmplot()pairplot() 获取新的关键字参数, markers . 这可以是一种标记,也可以是每个级别的不同标记的列表 hue 变量。使用不同颜色的不同标记应该让情节在复制成黑白(即印刷时)时更容易理解。看到了吗 github pull request (#323) 举个例子。

  • 一般来说,在中有一个新的关键字参数 FacetGridPairGridhue_kws . 同样地,这也让情节美学在色调变量的不同层次上有所不同,但更加灵活。 hue_kws 应该是一个字典,它将关键字参数的名称映射到与hue变量的级别数一样长的值列表。

  • 争论 subplot_kws 已添加到 FacetGrid . 这允许使用自定义投影进行分面打印,包括 maps with Cartopy .

调色板

  • 添加了两个新函数来创建自定义调色板。对于顺序选项板,可以使用 light_palette() 函数,它采用一种种子颜色,并从一个非常轻的,不饱和的变体创建一个渐变。对于不同的选项板,可以使用 diverging_palette() 函数在两个端点之间创建一个到亮或暗中点的平衡渐变。看到了吗 palette tutorial 更多信息。

  • 添加了指定种子颜色的功能 light_palette()dark_palette() 作为一个元组 huslhls 空间值或作为命名 xkcd 颜色。种子颜色的解释现在由新的 input 这些函数的参数。

  • 添加了几个新的交互式调色板小部件: choose_colorbrewer_palette()choose_light_palette()choose_dark_palette()choose_diverging_palette() . 为了保持一致性,将cubehelix小部件重命名为 choose_cubehelix_palette() (并修复了cubehelix调色板反转的错误)。这些函数现在在调用时还返回调色板列表或matplotlib colormap,并且该对象将在您使用小部件时实时更新。这将使在绘图上迭代变得容易,直到找到数据的良好表示。看到了吗 Github pull requestthis notebook (download it to use the widgets) 更多信息。

  • 彻底改变了颜色 palette tutorial 在选择一种或多种颜色的资料时,可以为他们的讨论提供动力。

错误修复

  • 修正了一个错误 PairGrid 当输入数据帧具有非默认索引时,会产生错误的结果(或崩溃)。

  • 修正了一个错误 PairGrid 传递数据类型为date的列时引发异常。

  • 修正了一个错误 lmplot() 当色调变量也用于行或列时,将显示图例(使图例冗余)。

  • 解决了matplotlib的一个bug,这个bug在 boxplot() 以蓝色出现。

  • kdeplot() 现在接受熊猫系列 datadata2 争论。

  • 在中使用非默认相关方法 corrplot() 现在暗示 sig_stars=False 由于用于检验相关性显著性值的排列检验使用皮尔逊度量。

  • 远离的 pdf.fonttype 从样式定义来看,由于版本0.4中使用的值导致了非常大的PDF文件。

v0.4.0(2014年9月)

这是0.3的主要版本。亮点包括 quick, high-level dataset exploration (同时还有一个 flexible interface )轻松创建 perceptually-appropriate color palettes 使用cubehelix系统。除了这些附加功能之外,还有一些较小的更改,使得使用seaborn可视化数据变得更容易、更强大。

绘图功能

  • 一个新物体, PairGrid ,以及相应的函数 pairplot() ,用于在数据集中绘制成对关系的网格。这种类型的绘图有时被称为“散点图矩阵”,但数据在 PairGrid 具有灵活性,可以使用散点图以外的许多样式。看到了吗 docs 更多信息。 注: 由于matplotlib的旧版本中存在错误,如果将这些函数与matplotlib 1.4或更高版本一起使用,将获得最佳效果。

  • 当变量映射到不同的颜色时,选择默认调色板的规则是统一的(因此在某些情况下会发生更改)。现在,当没有请求特定的调色板时,将使用当前的全局调色板,除非要映射的变量数量超过调色板中唯一颜色的数量,在这种情况下 "husl" 将用于避免循环。

  • 添加了关键字参数 hist_normdistplot() . 当 distplot() 现在绘制时没有KDE或参数密度,直方图是作为计数而不是密度绘制的。这可以通过设置 hist_normTrue .

  • 使用时 FacetGrid 用一个 hue 变量时,默认情况下调用时不再绘制图例 FacetGrid.map() . 相反,你必须打电话 FacetGrid.add_legend() 手动。这样可以更容易地将多个绘图分层到网格上,而不需要重复的图例。

  • 对进行了一些更改 factorplot 所以当不是所有级别的 x 变量在每个方面都有表示。

  • 增加了 logx 选择权 regplot() 用于在对数空间中拟合回归。

  • 什么时候? violinplot() 遇到一个只有一个观测值的bin,它现在将在该值处绘制一条水平线,而不是出错。

样式和调色板

  • 增加了 cubehelix_palette() 用于从cubehelix系统生成顺序调色板的函数。看到了吗 palette docs 有关如何使用这些选项板的详细信息。还有一个问题 choose_cubehelix() 它将启动一个交互式应用程序来选择笔记本中的cubehelix参数。

  • 增加了 xkcd_palette() 以及 xkcd_rgb 字典,以便使用 xkcd color survey .

  • 增加了 font_scale 选择权 plotting_context()set_context()set() . font_scale 可以独立增大或减小绘图中字体元素的大小。

  • 字体处理应该在没有安装Arial的系统上工作得更好。这是通过添加 font.sans-serif 字段到 axes_style 在matplotlib默认值前面加上Arial和Liberation Sans的定义。字体系列也可以通过 font 中的关键字参数 set() . 由于matplotlib的错误,这可能无法在matplotlib 1.3上正常工作。

  • 这个 despine() 函数获取新的关键字参数 offset ,替换已弃用的 offset_spines() 功能。在打印数据之前,不再需要偏移脊椎。

  • 为添加了默认值 pdf.fonttype 所以PDF中的文本在Adobe Illustrator中是可编辑的。

其他API变更

  • 删除了已弃用的 set_color_palettepalette_context 功能。在版本0.3中,这些被替换为 set_palette() 功能和使用能力 color_palette() 直接在 with 语句。

  • 删除了指定 nogrid 样式,已重命名为 white 在0.3。

v0.3.1(2014年4月)

这是0.3的一个小版本,修复了几个bug。

绘图功能

  • 中点的大小 pointplot()factorplot 现在使用线宽进行缩放,以便在不同的打印上下文中获得更好的美观效果。

  • 这个 pointplot() 色调变量的不同级别的图示符以不同的z顺序绘制,以便它们看起来是一致的。

漏洞修补

  • 修正了一个错误 FacetGrid (从而影响lmplot和factorplot)当 col_wrap 与许多未均匀划分为列宽的镶嵌面一起使用。

  • 修正了核密度估计支持有时计算错误的问题。

  • 修正了一个问题 hue 中缺少非字符串的变量级别 FacetGrid 传说。

  • 将调色板列表传递给 with 语句,现在使用整个调色板而不是前六种颜色。

v0.3.0(2014年3月)

这是0.2的主要版本,对打印功能和样式进行了许多增强。亮点包括 FacetGridfactorplotjointplot() ,以及对 style management . 还有很多新文档,包括 example gallery 重新组织 tutorial .

新的绘图功能

  • 这个 FacetGrid 类为seaborn添加了一种新形式的功能,提供了一种抽象地构造与数据集子集相对应的绘图网格的方法。它可以与多种绘图函数(包括大多数matplotlib和seaborn API)一起使用。看到了吗 tutorial 更多信息。

  • 版本0.3引入了 factorplot 在精神上与 lmplot() 当主变量是独立变量而不是独立变量时。 factorplot 可以使用相应的轴级别函数以点或条形表示绘制绘图 pointplot()barplot() (也是新的)。此外 factorplot 函数可用于在分面网格上绘制方框图。有关如何使用这些函数的示例,可以参考教程。

  • 另一个新功能是 jointplot() ,它是使用新的 JointGrid 对象。 jointplot() 概括了 regplot() 在seaborn的早期版本中 (regplot() 在0.3中有所变化;详情见下文),通过绘制两个变量之间关系的双变量图,并在图的侧面绘制其边缘分布。与 jointplot() ,您可以像以前一样绘制散点图或回归图,但现在也可以使用适当的单变量图为边际分布绘制双变量核密度或hexbin图。此外,它很容易使用 JointGrid 直接建立更复杂的绘图时提供的默认方法 jointplot() 不适合您的可视化问题。的教程 JointGrid 有更多关于此对象如何有用的示例。

  • 这个 residplot() 功能互补 regplot() 并且可以通过计算和绘制简单回归的残差来快速诊断线性模型的问题。还有一个 "resid" 好样的 jointplot() .

API更改

  • 最明显的变化是 regplot() 不再生成沿边缘轴分布的多分量图。相反。 regplot() 现在是一个“轴级”函数,可以绘制到特定轴集上的任何现有图形中。 regplot()lmplot() 也统一了(后者在幕后使用前者),所以所有关于如何拟合和表示回归模型的选项都可以用于这两个函数。去了解 regplot() 使用 jointplot() 具有 kind="reg" .

  • 如上所述, lmplot() 已重写以利用 FacetGrid 机械。这涉及到一些变化。这个 color 关键字参数已替换为 hue ,以提高整个包的一致性。这个 hue 参数将始终采用一个变量 name ,同时 color 将采用颜色名称或(在某些情况下)调色板。这个 lmplot() 函数现在返回 FacetGrid 用于绘制绘图实例。

  • matrc和plotlib函数与已更新的标准化参数交互。现在有三对函数, axes_style()set_style()plotting_context()set_context()color_palette()set_palette() . 在每种情况下,两个对都采用完全相同的参数。第一个函数定义并返回参数,第二个函数设置matplotlib默认值。此外,每一对中的第一个函数可以在 with 语句临时更改默认值。style和context函数现在也接受matplotlib rc参数的字典来覆盖seaborn默认值,并且 set() 现在还需要一个字典来更新任何matplotlib默认值。看到了吗 tutorial 更多信息。

  • 这个 nogrid 样式已被弃用并更改为 white 为了更加统一(即现在有 darkgriddarkwhitegridwhite 风格)。

其他变化

使用软件包

  • 如果您想使用软件包提供的绘图函数,而不将matplotlib样式设置为seaborn主题,现在可以这样做 import seaborn.apionly as snsfrom seaborn.apionly import lmplot ,等等。这是使用(也是新的) reset_orig() 函数,该函数将rc参数返回到matplotlib导入时的状态,即它们将遵守任何自定义设置 matplotlibrc matplotlib默认值之上的设置。

  • 包的依赖性负载已减少。它现在只能安装和使用 numpyscipymatplotlibpandas . 尽管 statsmodels 对于完整功能,仍建议使用,但不是必需的。

绘图功能

  • lmplot() (和 regplot() )有两个新选项用于拟合回归模型: lowessrobust . 前者适用于非参数平滑,而后者适用于使用对异常值不太敏感的方法的回归。

  • 回归中的不确定性 lmplot()regplot() 现在用更少的引导迭代来估计,所以绘图应该更快。

  • 单变量 kdeplot() 现在可以绘制为 累积的 密度图。

  • 改变 interactplot() 在查找等高线颜色图的默认限制时使用数据范围的稳健计算,以便在数据中存在异常值时更好地工作。

风格

  • 有一种新的风格, dark ,它与 darkgrid 但默认情况下不绘制栅格。

  • There is a new function, offset_spines(), and a corresponding option in despine() called trim. Together, these can be used to make plots where the axis spines are offset from the main part of the figure and limited within the range of the ticks. This is recommended for use with the ticks style.

  • 其他方面的海生风格已调整为更具吸引力的情节。

v0.2.1(2013年12月)

这是一个错误修复版本,没有新功能。

错误修复

  • 改变了 violinplot()boxplot() 当使用 Series 对象作为数据并执行 groupby 为存储箱分配数据以解决0.13中出现的问题。

  • 另外固定了 groupby 用一个字典或一组代码来工作。

  • 修正了kde拟合的工件可能未命中并创建密度轴开始低于0的绘图的错误。

  • 确保用于kde拟合的数据是双类型的,以避免低级别的statsmodels错误。

  • 改变了直方图仓位宽度参考规则的实现,以估计仓位数量为上限。

v0.2.0(2013年12月)

这是0.1的一个主要版本,有许多API更改、增强和错误修复。

亮点包括对timeseries plotting的全面修改,以智能地使用新功能dataframes interactplot() 为了可视化连续的相互作用,双变量核密度估计 kdeplot() ,以及对调色板处理的显著改进。

版本0.2还引入了对python3的实验性支持。

除了库增强功能外,文档已被大量重写,以反映新功能并改进包背后思想的表示。

API更改

  • 这个 tsplot() 函数被重写以接受长格式的数据 DataFrame 并根据情况画出不同的痕迹。这引入了一个相对较小但不可避免的API更改,而不是 sns.tsplot(time, heights) ,你现在必须这样做 sns.tsplot(heights, time=time) (the time 参数现在是可选的,以便更快地指定简单绘图)。此外 "obs_traces""obs_points" 中的错误样式 tsplot() 已重命名为 "unit_traces""unit_points" ,分别。

  • 符合核密度估计的函数 (kdeplot()violinplot() )现在使用 statsmodels 而不是 scipy ,以及相应改变影响的参数。这允许在指定带宽和内核时增加灵活性,并允许在定义支持范围时进行更智能的选择。默认选项应生成非常接近旧默认值的绘图。

  • 这个 kdeplot() 函数现在使用数据的第二个位置参数来绘制双变量密度。

  • 这个 violin() 功能已更改为 violinplot() ,以保持一致性。在0.2中, violin 仍然有效,但会引发 UserWarning .

新的绘图功能

  • 这个 interactplot() 函数为交互式线性模型绘制等高线图(即等高线显示 y-hat 从模型中 y ~ x1 * x2 )在两个预测变量之间的散点图上。这个图应该有助于理解两个连续变量之间的相互作用。

  • 这个 kdeplot() 函数现在可以绘制一个二维密度估计作为一个等值线图,如果提供了二维输入数据。

  • 这个 palplot() 函数提供了一个简单的基于网格的调色板可视化。

其他变化

绘图功能

  • 这个 corrplot() 函数可以在没有相关系数注释的情况下绘制,并且可以在绘图的一侧使用变量名来处理大型数据集。

  • 此外, corrplot() 根据指定测试的方向智能地设置调色板。

  • 这个 distplot() 直方图使用一个参考规则来选择箱子大小,如果它没有提供。

  • 增加了 x_bins 选择权 lmplot() 对于一个连续的预测变量,允许更清晰的趋势与许多数据点。

  • 增强了对基于 name 几种分布图函数的属性及其应用 tsplot() 实现更智能的集成。

  • 分散点 lmplot() 有点透明,所以很容易看到观察重叠的地方。

  • 增加了 order 参数到 boxplot()violinplot() 使用熊猫对象时控制箱子的顺序。

  • 当一个 ax 参数未提供给绘图函数,它将获取当前活动轴,而不是绘制新轴。

调色板

  • 增加了 dark_palette()blend_palette() 用于动态创建混合调色板。

  • 调色板机器现在是智能的定性色板 (Set1Paired ,等等),它们被适当地视为离散的。

  • Seaborn调色板 (deepmuted 等)已在基本色调顺序方面进行了标准化,所有调色板现在都有6种颜色。

  • 介绍 {{mpl_palette}}_d 调色板,它使调色板具有源调色板的基本配色方案,但具有从深色到浅色的顺序混合,以用于线/散点图/等高线图。

  • 增加了 palette_context() 用于由控件控制的块式调色板的函数 with 语句。

打印样式

  • 增加了 despine() 用于轻松移除曲线刺的功能。

  • 新的情节风格, "ticks" 已被添加。

  • 在所有样式中,记号标签都会在离轴稍远的位置填充,以避免在(0,0)处发生冲突。

一般一揽子问题

  • 通过分解整块 plotobjs 模块按组成图的总体目标分成更小的模块。

  • 移除 scikits-learn 中的依赖关系 moss .

  • 与一起安装 pip 应该自动安装大多数缺少的依赖项。

  • 示例笔记本现在用作自动测试套件。

错误修复

  • 修复了标签与的数据不匹配的错误 boxplot()violinplot() 使用groupby时。

  • 修复了 desaturate() 功能。

  • 修复了 coefplot() 图形尺寸计算。

  • 修正了一个错误 regplot() 列表输入阻塞。

  • 修正了绘制水平箱线图时的错误行为。

  • 指定 distplot() 直方图现在起作用了。

  • 修正了一个错误 kdeplot() 将重置轴高度并切断现有数据。

  • 轴已移出所有顶层样式 seaborn.set() 功能,以便可以干净地更改上下文或调色板。