这是Seaborn中的错误吗?

数据挖掘 Python 可视化
2021-10-02 21:23:31

我正在使用 seaborn violin plot 功能,但是小提琴的尺寸不是我所期望的。有谁知道这是否是我做错的事情,或者我怀疑这是否是 seaborn 中的错误。

我正在使用的代码如下;

 sns.violinplot(x = "Issue Type", y = "issue_adj_risk_score", data=subset, scale="count", cut =0)

我能看到的图表是这样的

在此处输入图像描述

据我了解,因为我使用了scale ="count"参数,所以这些小提琴中的每一个的大小应该与每个区域的总数量成正比。然而,在“类别 1”(粉红色)中,我共有 936 个 issue_adj_risk_score 为 1,而在第 2 类(橙色)中,我共有 1212 个 issue_adj_risk_score 为 1。

但是我很困惑,因为粉红色比橙色大!:-(

有谁知道这可能是为什么?

编辑

我现在看到特定类别的范围不一致的进一步问题。我有一个数据集并使用 violinplot 绘制以下内容

在此处输入图像描述

在这里,我们可以看到某个类别(我用红色突出显示)的范围为 1-4。这让我感到惊讶,所以我查看了基础数据,它在 4 处不包含任何值。然后我取了一个仅包含此类别的子集,并用相同的数据绘制了一个小提琴图并得到了这个

在此处输入图像描述

这是我期望在初始图表中看到的!

为了进一步研究这个问题,我再次根据原始数据绘制了一个箱线图,得到了以下结果

在此处输入图像描述

这与第一张图表一致,但不反映实际数据。这三个图表怎么可能来自相同的数据!!???

1个回答

seaborn 文档中:

比例:{“面积”,“计数”,“宽度”},可选

用于缩放每个小提琴宽度的方法。如果是面积,则每把小提琴将具有相同的面积。如果计数,小提琴的宽度将按该箱中的观察次数进行缩放。如果宽度,每个小提琴将具有相同的宽度。

所以小提琴被缩放,使得宽度与观察次数成正比。您期望该区域以计数而不是宽度进行缩放,这对我来说似乎很自然,但该选项似乎在 seaborn 中不存在。这是一个与此相关的问题,有一个手工解决方案:

https://github.com/mwaskom/seaborn/issues/962