Seaborn kdeplot没有绘制一些数据?

时间:2016-08-24 01:50:49

标签: python pandas matplotlib seaborn

我正在尝试使用Seaborn kdeplot示例来处理我的数据集。出于某种原因,我的一个数据集根本没有绘图,但另一个似乎是绘图很好。为了得到一个最小的工作示例,我从非常大的数据集中只抽取了10行。

我的输入数据如下所示:

#Dataframe dfA
    index   x       y     category
0   595700  5   1.000000    14.0
1   293559  4   1.000000    14.0
2   562295  3   0.000000    14.0
3   219426  4   1.000000    14.0
4   592731  2   1.000000    14.0
5   178573  3   1.000000    14.0
6   553156  4   0.500000    14.0
7   385031  1   1.000000    14.0
8   391681  3   0.999998    14.0
9   492771  2   1.000000    14.0

# Dataframe dfB
    index   x      y      category
0   56345   3   1.000000    6.0
1   383741  4   1.000000    6.0
2   103044  2   1.000000    6.0
3   297357  5   1.000000    6.0
4   257508  3   1.000000    6.0
5   223600  2   0.999938    6.0
6   44530   2   1.000000    6.0
7   82925   3   1.000000    6.0
8   169592  3   0.500000    6.0
9   229482  4   0.285714    6.0

我的代码段如下所示:

import seaborn as sns
import matplotlib.pyplot as plt

sns.set(style="darkgrid")

# Set up the figure
f, ax = plt.subplots(figsize=(8, 8))

# Draw the two density plots
ax = sns.kdeplot(dfA.x, dfA.y,
             cmap="Reds", shade=True, shade_lowest=False)
ax = sns.kdeplot(dfB.x, dfB.y,
             cmap="Blues", shade=True, shade_lowest=False)

为什么来自数据框dfA的数据实际上没有绘图?

1 个答案:

答案 0 :(得分:1)

我不认为高斯KDE非常适合您的任何数据集。您有一个具有离散值的变量和一个变量,其中大多数值似乎是常量。这不是由双变量高斯分布很好地模拟的。

至于到底发生了什么,没有完整的数据集,我不能肯定地说,但我希望KDE带宽(特别是在y轴上)最终非常窄,使得密度不可忽略的区域很小。您可以尝试设置更宽的带宽,但我的建议是为此数据使用不同类型的绘图。