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

现在,假设我想对第一列的值进行直方图处理,将其称为Feature1。据我所知,matplotlib的plt.hist()无法在同一图中绘制2个直方图,其中一个对应于A类的Feature1功能,另一个对应于B类的功能。另外,seaborn的sns.distplot也不会这样做。所以我决定尝试如下的seaborn的对图

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


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

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

最佳答案

为了用comment解释Bugbeeb,在使用diag_kind = 'hist'时,将diag_kws传递到plt.hist()中。在文档中未对此进行概述,但是可以从source中清楚地看到,


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是需要作为int的料箱数。

关于python - 如何更改seaborn的pairplot()函数中的垃圾箱数量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59696426/

10-10 14:39