我有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/