关于density2d背后的原理,我还有一个更笼统的问题。我正在使用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)。
有人问了一个相关的问题:
用R中的属性值分布创建热图(而不是密度热图),
但是找不到令人满意的答案。
所以我的问题是(i)为什么?(ii)如何避免/尽可能调整?
这可能会有所帮助。我不太熟悉stat_density2d
。看到您的代码和ggplot文档(http://docs.ggplot2.org/0.9.2.1/stat_density2d.html)之后,我认为..level..
可能不是这样。然后,我尝试了..density..
有人将能够解释为什么您需要密度,同时我认为这是您想要的图形。
ggplot(data = df, aes(x = x, y = y)) +
stat_density2d(geom="tile", aes(fill = ..density..), contour = FALSE) +
geom_path() +
coord_equal(xlim=c(0,600),ylim=c(0,600)) +
expand_limits(x=c(0,600),y=c(0,600))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句