R语言 密度图和直方图差异

6jjcrrmo  于 2023-04-27  发布在  其他
关注(0)|答案(1)|浏览(170)

所以我有两个 Dataframe ,一个是另一个的严格子集(它是这个 Dataframe 和另一个 Dataframe 之间的交集)。 Dataframe 是变量和相关计数的列表。
我遇到的问题是,即使与绘制完全相同数据的直方图相比,得到的密度图对数据也没有意义

ggplot()+
geom_histogram(data = vdjtoolTableTwo, aes(x = log10(frequency), y = after_stat(density), weight = count), fill=rgb(0,0,1,1/4)) +
geom_density(data = vdjtoolTableTwo, aes(x = log10(frequency), y = after_stat(density), weight = count), fill="black", alpha = 0.25)+
geom_histogram(data = tableOfGraphData, aes(x = log10(frequency.y), y = after_stat(density), weight = count.y), fill=rgb(1,0,0,1/4)) +
geom_density(data = tableOfGraphData, aes(x = log10(frequency.y), y = after_stat(density),  weight = count.y), fill = "red", alpha = 0.25)+
coord_cartesian(xlim = scale)

其中tableOfGraphData是vdjTableTwo的严格子集
结果如下

在直方图中可以清楚地看到,蓝色的表格(vdjtoolTableTwo)稍微向下移动,具有相对较高浓度的低频值,并且较红的直方图tableOfGraphData稍微向较高的值移动,
让我困惑的是为什么密度图的相对形状与直方图不一致,感觉红色曲线应该在上半部分的所有点上都在黑色曲线之上,但事实并非如此。
在密度图中添加“调整= 1/5”只会进一步加剧问题

我相信这是一些简单的关于密度图的工作原理,但我不能为我的生活弄清楚它。任何建议,甚至从哪里开始寻找将不胜感激

2hh7jdfx

2hh7jdfx1#

解决了!
对于那些有类似问题的人来说,两条密度曲线之间的数据集差异导致内核具有不同的标准差(据我所知)。将带宽设置为设定值而不是SD的因子可以在所有值中获得一致的结果
对于我的数据,它看起来像这样

graphX <- ggplot()+
geom_density(data = onlyOne, aes(x = log10(frequency), weight = count), bw = 0.2, fill="black", alpha = 0.5)+
geom_density(data = tableOfGraphData, aes(x = log10(frequency.x), weight = count.x), bw = 0.2, fill = "red", alpha = 0.5)+
coord_cartesian(xlim = scale)+
theme_light()

得到这个结果

相关问题