首页 > 解决方案 > 如何更改 seaborn 的 pairplot() 函数中的 bin 数量?

问题描述

我有一个 36000 行和 51 列的数据集。每行是一个观察值,前 50 列是每个观察值的 50 个不同特征。第 51 列是值为 0 或 1 的一列,其中 0 表示观察属于 A 类,1 表示它属于 B 类。

现在假设我想制作第一列值的直方图,称之为 Feature1。据我所知,matplotlib 的 plt.hist() 无法在同一个图中绘制 2 个直方图,其中一个对应于 A 类的 Feature1 的特征,另一个对应于 B 类的特征。此外,seaborn 的 sns.distplot 也没有做到这一点。所以我决定尝试seaborn的pairplot如下

sns.pairplot(df, vars = ["Feature1"], hue= "Class", diag_kind = "hist", diag_kws= dict(alpha=0.55))

Feature1 是第一列的名称,Class 是最后一列的名称,其中包含每个观察的类标签。出现的直方图很好,但我想增加使用的 bin 数量。可悲的是,我没有找到使用此特定功能的任何方法。

有人知道这个问题的解决方案吗?谢谢

标签: pythondataframeseaborn

解决方案


为了解释Bugbeeb的评论,使用时传入. 这在文档中没有概述,但从源代码中可以清楚地看到,diag_kind = 'hist'diag_kwsplt.hist()

def PairPlot(...):
    # ...
    if diag_kind == "hist":
        grid.map_diag(plt.hist, **diag_kws)
    # ...

由于plt.hist()接受参数bins作为整数来控制箱的数量,你可以简单地做

sns.pairplot(df, vars = ["Feature1"], hue = "Class", diag_kind = "hist", 
             diag_kws = {'alpha':0.55, 'bins':n})

哪里n是所需的 bin 数量int


推荐阅读