seaborn.objects.Hist#

class seaborn.objects.Hist(stat='count', bins='auto', binwidth=None, binrange=None, common_norm=True, common_bins=True, cumulative=False, discrete=False)#

对观测值进行分组,计算其数量,并可以选择进行归一化或累积。

参数:
statstr

每个分组中要计算的聚合统计量

  • count: 观测值的数量

  • density: 归一化,使得直方图的总面积等于1

  • percent: 归一化,使得柱状图的高度之和为100

  • probabilityproportion: 归一化,使得柱状图的高度之和为1

  • frequency: 将观测值数量除以分组宽度

binsstr, int 或 ArrayLike

通用参数,可以是参考规则的名称、分组数量或分组边界。传递给 numpy.histogram_bin_edges().

binwidthfloat

每个分组的宽度;覆盖 bins,但可以与 binrange 一起使用。注意,如果 binwidth 不能均匀地划分分组范围,则实际使用的分组宽度将仅近似于参数值。

binrange(min, max)

分组边界的最小值和最大值;可以与 bins(当为数字时)或 binwidth 一起使用。默认为数据极值。

common_normbool 或变量列表

当不为 False 时,归一化将应用于所有组。使用 True 对所有组进行归一化,或传递定义归一化组的变量名。

common_binsbool 或变量列表

当不为 False 时,所有组使用相同的分组。使用 True 对所有组共享分组,或传递变量名以在其中共享分组。

cumulativebool

如果为 True,则累积分组值。

discretebool

如果为 True,则设置 binwidthbinrange,使得分组宽度为单位宽度,并以整数为中心

备注

计算和绘制直方图的分组选择会对从可视化中得出的见解产生重大影响。如果分组过大,它们可能会抹去重要的特征。另一方面,分组过小可能会被随机变异性所支配,从而掩盖了真实潜在分布的形状。默认分组大小是使用参考规则确定的,该规则取决于样本大小和方差。这在许多情况下(例如,对于“行为良好的”数据)效果很好,但在其他情况下则失败。始终尝试不同的分组大小以确保您没有错过重要的内容。此函数允许您通过多种方式指定分组,例如通过设置要使用的分组总数、每个分组的宽度或分组应断裂的特定位置。

示例

对于离散或分类变量,此统计量通常与 Bar 标记组合使用

so.Plot(penguins, "island").add(so.Bar(), so.Hist())
../_images/objects.Hist_1_0.png

当用于估计单变量分布时,最好使用 Bars 标记

p = so.Plot(penguins, "flipper_length_mm")
p.add(so.Bars(), so.Hist())
../_images/objects.Hist_3_0.png

分组的粒度会影响潜在分布是否得到准确地表示。通过设置总数来调整它

p.add(so.Bars(), so.Hist(bins=20))
../_images/objects.Hist_5_0.png

或者,指定分组的宽度

p.add(so.Bars(), so.Hist(binwidth=5))
../_images/objects.Hist_7_0.png

默认情况下,变换返回每个分组中观测值的计数。计数可以进行归一化,例如显示比例

p.add(so.Bars(), so.Hist(stat="proportion"))
../_images/objects.Hist_9_0.png

当其他变量定义组时,默认行为是对所有组进行归一化

p = p.facet("island")
p.add(so.Bars(), so.Hist(stat="proportion"))
../_images/objects.Hist_11_0.png

传递 common_norm=False 以独立地对每个分布进行归一化

p.add(so.Bars(), so.Hist(stat="proportion", common_norm=False))
../_images/objects.Hist_13_0.png

或者,在多个分组变量的情况下,指定一个子集以在其中进行归一化

p.add(so.Bars(), so.Hist(stat="proportion", common_norm=["col"]), color="sex")
../_images/objects.Hist_15_0.png

当分布重叠时,使用 Area 标记更容易识别其形状

p.add(so.Area(), so.Hist(), color="sex")
../_images/objects.Hist_17_0.png

或添加 Stack 移动以表示部分与整体的关系

p.add(so.Bars(), so.Hist(), so.Stack(), color="sex")
../_images/objects.Hist_19_0.png