我正在尝试使用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
的数据实际上没有绘图?
答案 0 :(得分:1)
我不认为高斯KDE非常适合您的任何数据集。您有一个具有离散值的变量和一个变量,其中大多数值似乎是常量。这不是由双变量高斯分布很好地模拟的。
至于到底发生了什么,没有完整的数据集,我不能肯定地说,但我希望KDE带宽(特别是在y轴上)最终非常窄,使得密度不可忽略的区域很小。您可以尝试设置更宽的带宽,但我的建议是为此数据使用不同类型的绘图。