seaborn.boxenplot#

seaborn.boxenplot(data=None, *, x=None, y=None, hue=None, order=None, hue_order=None, orient=None, color=None, palette=None, saturation=0.75, fill=True, dodge='auto', width=0.8, gap=0, linewidth=None, linecolor=None, width_method='exponential', k_depth='tukey', outlier_prop=0.007, trust_alpha=0.05, showfliers=True, hue_norm=None, log_scale=None, native_scale=False, formatter=None, legend='auto', scale=<deprecated>, box_kws=None, flier_kws=None, line_kws=None, ax=None, **kwargs)#

为大型数据集绘制增强型箱线图。

这种风格的图最初被称为“字母值”图,因为它显示了大量的分位数,这些分位数被定义为“字母值”。它类似于箱线图,绘制了分布的非参数表示,其中所有特征都对应于实际观测值。通过绘制更多的分位数,它提供了关于分布形状的更多信息,特别是在尾部。

请参阅 教程 以获取更多信息。

注意

默认情况下,此函数将其中一个变量视为分类变量,并在相关轴上以序数位置(0、1、…n)绘制数据。从 0.13.0 版开始,可以通过设置 native_scale=True 来禁用此功能。

参数:
dataDataFrame、Series、dict、array 或 array 列表

用于绘图的数据集。如果 xy 不存在,则将其解释为宽格式。否则,预计它将是长格式。

x, y, huedata 中的变量名称或向量数据

用于绘制长格式数据的输入。请参阅示例了解解释。

order, hue_order字符串列表

用于绘制分类变量级别的顺序;否则,级别将从数据对象推断。

orient“v” | “h” | “x” | “y”

绘图的方向(垂直或水平)。这通常根据输入变量的类型推断,但可以用来解决当 xy 都是数字或绘制宽格式数据时出现的歧义。

在版本 v0.13.0 中更改: 添加了 ‘x’/’y’ 作为选项,等效于 ‘v’/’h’。

colormatplotlib 颜色

绘图中元素的单一颜色。

palette调色板名称、列表或字典

用于 hue 变量的不同级别的颜色。应该是 color_palette() 可以解释的东西,或者一个将色调级别映射到 matplotlib 颜色的字典。

saturation浮点数

绘制填充颜色时原始饱和度的比例。大色块通常在颜色不饱和的情况下看起来更好,但是如果你希望颜色与输入值完全匹配,则将其设置为 1

fill布尔值

如果为 True,则使用实心色块。否则,绘制为线框。

版本 v0.13.0 中的新增功能。

dodge“auto” 或布尔值

当使用色调映射时,元素是否应该沿着方向轴缩小和移动以消除重叠。如果 "auto",则在方向变量与分类变量交叉时设置为 True,否则设置为 False

在版本 0.13.0 中更改: 添加了 "auto" 模式作为新的默认值。

width浮点数

方向轴上分配给每个元素的宽度。当 native_scale=True 时,它相对于本机比例中两个值之间的最小距离。

gap浮点数

沿着方向轴收缩此比例因子,在躲避的元素之间添加间隙。

版本 0.13.0 中的新增功能。

linewidth浮点数

用于框定绘图元素的线条的宽度。

linecolor颜色

用于线元素的颜色,当 fill 为 True 时。

版本 v0.13.0 中的新增功能。

width_method{“exponential”, “linear”, “area”}

用于字母值框宽度的计算方法

  • "exponential":表示相应的百分位数

  • "linear":每个框的宽度递减一个固定值

  • "area":表示该框中数据点的密度

k_depth{“tukey”, “proportion”, “trustworthy”, “full”} 或整数

在每个尾部计算和绘制的级别数

  • "tukey":使用 log2(n) - 3 个级别,覆盖与箱线图晶须相似的范围

  • "proportion":大约留下 outlier_prop 个异常值

  • "trusthworthy":扩展到置信度至少为 trust_alpha 的级别

  • "full": 使用 log2(n) + 1 个级别并扩展到最极端点

outlier_propfloat

预期数据中异常值的比例;在 k_depth="proportion" 时使用。

trust_alphafloat

最极端级别的置信度阈值;在 k_depth="trustworthy" 时使用。

showfliersbool

如果为 False,则抑制异常值的绘制。

hue_norm元组或 matplotlib.colors.Normalize 对象

应用于 hue 变量的色图中数据单位的归一化,当它为数值时。如果 hue 是分类的,则不相关。

v0.12.0 版本新增。

log_scalebool 或数字,或 bool 或数字对

将轴刻度设置为对数。单个值设置图中任何数值轴的数据轴。一对值独立设置每个轴。数值被解释为所需的基数(默认值为 10)。当为 NoneFalse 时,seaborn 会推迟到现有的 Axes 刻度。

版本 v0.13.0 中的新增功能。

native_scalebool

当为 True 时,分类轴上的数值或日期时间值将保持其原始刻度,而不是转换为固定索引。

版本 v0.13.0 中的新增功能。

formatter可调用对象

将分类数据转换为字符串的函数。影响分组和刻度标签。

版本 v0.13.0 中的新增功能。

legend“auto”,“brief”,“full”,或 False

如何绘制图例。如果为“brief”,则数值 huesize 变量将以均匀间隔值的样本表示。如果为“full”,则每个组将在图例中获得一个条目。如果为“auto”,则根据级别数量在简要或完整表示之间进行选择。如果为 False,则不会添加图例数据,也不会绘制图例。

版本 v0.13.0 中的新增功能。

box_kws: dict

方框艺术家的关键字参数;传递给 matplotlib.patches.Rectangle.

v0.12.0 版本新增。

line_kws: dict

表示中值的线的关键字参数;传递给 matplotlib.axes.Axes.plot().

v0.12.0 版本新增。

flier_kws: dict

表示异常值观测值的散点的关键字参数;传递给 matplotlib.axes.Axes.scatter().

v0.12.0 版本新增。

axmatplotlib Axes

用于绘制图形的 Axes 对象,否则使用当前 Axes。

kwargs键值映射

其他关键字参数传递给 matplotlib.patches.Rectangle,被 box_kws 中的那些参数取代。

返回值:
axmatplotlib Axes

返回带有绘制图形的 Axes 对象。

另请参见

violinplot

箱线图和核密度估计的组合。

boxplot

具有类似 API 的传统箱线图。

catplot

将分类图与 FacetGrid 组合。

备注

有关更详细的解释,您可以阅读介绍该图的论文:https://vita.had.co.nz/papers/letter-value-plot.html

示例

绘制单个水平图,将数据直接分配给坐标变量

sns.boxenplot(x=diamonds["price"])
../_images/boxenplot_1_0.png

按分类变量分组,引用数据框中的列

sns.boxenplot(data=diamonds, x="price", y="clarity")
../_images/boxenplot_3_0.png

按另一个变量分组,用方框的颜色表示它。默认情况下,每个箱线图将被“躲避”以便它们不会重叠;您也可以在它们之间添加一个小间隙

large_diamond = diamonds["carat"].gt(1).rename("large_diamond")
sns.boxenplot(data=diamonds, x="price", y="clarity", hue=large_diamond, gap=.2)
../_images/boxenplot_5_0.png

选择每个方框宽度的默认规则表示方框覆盖的百分位数。或者,您可以通过线性因子减少每个方框的宽度

sns.boxenplot(data=diamonds, x="price", y="clarity", width_method="linear")
../_images/boxenplot_7_0.png

width 参数本身决定了最大方框的宽度

sns.boxenplot(data=diamonds, x="price", y="clarity", width=.5)
../_images/boxenplot_9_0.png

有几种不同的方法来选择要绘制的方框数量,包括基于百分位数估计的置信水平的规则

sns.boxenplot(data=diamonds, x="price", y="clarity", k_depth="trustworthy", trust_alpha=0.01)
../_images/boxenplot_11_0.png

linecolorlinewidth 参数控制方框的轮廓,而 line_kws 参数控制表示中值的线,flier_kws 参数控制异常值的显示

sns.boxenplot(
    data=diamonds, x="price", y="clarity",
    linewidth=.5, linecolor=".7",
    line_kws=dict(linewidth=1.5, color="#cde"),
    flier_kws=dict(facecolor=".7", linewidth=.5),
)
../_images/boxenplot_13_0.png

也可以绘制未填充的方框。对于未填充的方框,所有元素都将以线艺术形式绘制并遵循 hue(如果使用)。

sns.boxenplot(data=diamonds, x="price", y="clarity", hue="clarity", fill=False)
../_images/boxenplot_15_0.png