R的新手并卡住了。我正在尝试通过减去另一个数据集的2d概率密度来归一化热图的2d概率密度。我正在寻找行为在空间中发生的位置,但是要这样做,我想从行为发生的时间中减去主体在大部分时间上所花费的时间,以了解行为的相对密度。为此,我试图为以下代码找到用于绘制热图的概率密度矩阵:
<script src="app.js" defer></script>
<script>
const progress = new ProgressBar; //undefined...
</script>
这可以为任一数据集图制作热量图,但是我找不到ggplot或stat_density_2d将密度数据相减的位置。
或者,我尝试使用以下代码获取两个数据集的密度并将其存储为变量dens:
ctrlplot<-ctrl %>% ggplot(aes(x=x, y=y)) +
stat_density_2d(geom = "raster", aes(fill = stat(density)), contour = FALSE)+
scale_fill_gradientn(colours=matlab.like(15), na.value = "gray",
as lowertick, uppertick, interval
limit=c(0,1.3e-05)) #sets the static limit of probabilities.
现在,我不确定如何减去所得的z值并将其返回到热图。我知道这可能是一个简单的解决方案,但我肯定会陷入困境。任何有关如何更轻松地做到这一点的建议,或其他有关如何相互减去密度的建议,将不胜感激。
更新: 我找到了一种从ggplot中提取密度数据的方法。我能够使用以下代码从两个不同的数据集中提取密度数据,减去矢量并将密度放回到原始数据帧中:
n<-100
h<-c(bandwidth.nrd(ctrl$x),bandwidth.nrd(ctrl$y))
dens<-kde2d(ctrl$x,ctrl$y,n=n,h=h)
但是最后两个图ctrlplot(原始)和ctrlplot2(减密度)给出相同的图。由于原始ggplot_build中有不同的列表,因此不确定我是否要替换数据框的正确部分,以使其更新为图形部分。