关于密度 2d 背后的原理,我有一个更普遍的问题。我正在使用 ggplot 和 density2d 函数来可视化动物的运动。我的想法是计算热图,显示动物大部分时间的位置和/或识别特别感兴趣的区域。然而, density2d 函数有时会产生相当莫名其妙的图。
这就是我的意思:
set.seed(4)
x<-runif(50,1,599)
y<-runif(50,1,599)
df<-data.table(x,y)
ggplot(df,aes(x=x,y=y))
+stat_density2d(aes(x=x,y=y,fill=..level..,alpha=..level..),bins=50,geom="polygon")
+coord_equal(xlim=c(0,600),ylim=c(0,600))
+expand_limits(x=c(0,600),y=c(0,600))
+geom_path()
看起来像这样:
有些区域有密度估计但没有数据(大约 x:50,y:300)。
现在比较一下:
set.seed(13)
x<-runif(50,1,599)
y<-runif(50,1,599)
df<-data.table(x,y)
ggplot(df,aes(x=x,y=y))
+stat_density2d(aes(x=x,y=y,fill=..level..,alpha=..level..),bins=50,geom="polygon")
+coord_equal(xlim=c(0,600),ylim=c(0,600))
+expand_limits(x=c(0,600),y=c(0,600))
+geom_path()
看起来像这样:
这里有一些区域“没有”密度估计,但有实际数据(大约 x:100,y:550)。
有人问了一个相关的问题:
Create heatmap with distribution of attribute values in R(不是密度热图)
但是没有找到令人满意的答案。
所以我的问题是(i)为什么?(ii) 如果可能,如何避免/调整?