seaborn.
boxenplot
(*, x=None, y=None, hue=None, data=None, order=None, hue_order=None, orient=None, color=None, palette=None, saturation=0.75, width=0.8, dodge=True, k_depth='tukey', linewidth=None, scale='exponential', outlier_prop=0.007, trust_alpha=0.05, showfliers=True, ax=None, **kwargs)¶为较大的数据集绘制增强的方框图。
这种类型的绘图最初被命名为“字母值”绘图,因为它显示了大量被定义为“字母值”的分位数。它类似于绘制分布的非参数表示的方框图,其中所有特征对应于实际观测值。通过绘制更多的分位数,它提供了有关分布形状的更多信息,特别是在尾部。要获得更广泛的解释,您可以阅读介绍该情节的文章:
https://vita.had.co.nz/papers/letter-value-plot.html
输入数据可以以多种格式传递,包括:
表示为列表、numpy数组或直接传递给 x
, y
和/或 hue
参数。
“长格式”数据帧,在这种情况下 x
, y
和 hue
变量将决定如何绘制数据。
一个“宽格式”数据框,这样每个数字列都将被打印出来。
向量的数组或列表。
在大多数情况下,可以使用numpy或Python对象,但最好使用pandas对象,因为关联的名称将用于注释轴。此外,可以对分组变量使用分类类型来控制绘图元素的顺序。
此函数始终将其中一个变量视为分类变量,并在顺序位置(0,1。。。n) 在相关轴上,即使数据具有数字或日期类型。
见 tutorial 更多信息。
data
或矢量数据,可选中变量的名称用于绘制长格式数据的输入。解释见示例。
用于打印的数据集。如果 x
和 y
不存在,这被解释为广义形式。否则它将是长格式的。
以绘制中的分类级别,否则级别是从数据对象推断出来的。
绘图的水平方向或垂直方向。这通常是根据输入变量的类型推断出来的,但当两者都存在时,它可以用来解决含糊不清的问题 x
和 y
是数字或打印宽格式数据时。
所有元素的颜色,或渐变调色板的种子。
用于不同级别的 hue
变量。应该是可以解释的东西 color_palette()
,或将色调级别映射到matplotlib颜色的字典。
以原始饱和度的比例绘制颜色。大的补丁通常看起来更好,稍微去饱和的颜色,但设置这个 1
如果希望打印颜色与输入颜色规范完全匹配。
不使用色调嵌套时完整元素的宽度,或主分组变量的一个级别的所有元素的宽度。
使用色调嵌套时,元素是否应沿分类轴移动。
要绘制的框数,以及扩展的百分位数。所有的方法都在韦翰的论文中有详细说明。每种方法都对异常值的数量做出不同的假设,并利用不同的统计特性。如果是“比例”,抽取不超过 outlier_prop
极端的观察。如果“满”,则抽签 log(n)+1
盒。
构成绘图元素的灰色线的宽度。
方法用于字母值框的宽度。所有这些都在视觉上给出了相似的结果。”“线性”通过一个恒定的线性因子减少宽度,“指数”使用未覆盖数据的比例,“面积”与覆盖数据的百分比成比例。
被认为是异常值的数据比例。必须在范围(0,1)内。用于确定打印时要打印的框数 k_depth="proportion"
.
要绘制的框的置信水平。用于确定打印时要打印的框数 k_depth="trustworthy"
. 必须在范围(0,1)内。
如果为False,则禁止绘制异常值。
轴对象,否则使用当前轴。
其他关键字参数传递给 matplotlib.axes.Axes.plot()
和 matplotlib.axes.Axes.scatter()
.
返回绘制了绘图的轴对象。
参见
violinplot
箱线图和核密度估计的结合。
boxplot
一个具有类似API的传统盒子和胡须图。
catplot
把一个明确的情节与另一个情节结合起来 FacetGrid
.
实例
绘制单个水平长方体图:
>>> import seaborn as sns
>>> sns.set_theme(style="whitegrid")
>>> tips = sns.load_dataset("tips")
>>> ax = sns.boxenplot(x=tips["total_bill"])
绘制按分类变量分组的垂直长方体图:
>>> ax = sns.boxenplot(x="day", y="total_bill", data=tips)
用两个分类变量嵌套分组绘制字母值图:
>>> ax = sns.boxenplot(x="day", y="total_bill", hue="smoker",
... data=tips, palette="Set3")
当某些箱子为空时,绘制嵌套分组的长方体图:
>>> ax = sns.boxenplot(x="day", y="total_bill", hue="time",
... data=tips, linewidth=2.5)
通过传递显式命令来控制框顺序:
>>> ax = sns.boxenplot(x="time", y="tip", data=tips,
... order=["Dinner", "Lunch"])
为数据帧中的每个数字变量绘制一个方框图:
>>> iris = sns.load_dataset("iris")
>>> ax = sns.boxenplot(data=iris, orient="h", palette="Set2")
使用 stripplot()
要在方框顶部显示数据点:
>>> ax = sns.boxenplot(x="day", y="total_bill", data=tips,
... showfliers=False)
>>> ax = sns.stripplot(x="day", y="total_bill", data=tips,
... size=4, color=".26")
使用 catplot()
合并 boxenplot()
和A FacetGrid
. 这允许在其他分类变量中进行分组。使用 catplot()
比使用更安全 FacetGrid
直接,因为它确保了跨方面的可变顺序的同步:
>>> g = sns.catplot(x="sex", y="total_bill",
... hue="smoker", col="time",
... data=tips, kind="boxen",
... height=4, aspect=.7);