密度图和直方图差异

问题描述 投票:0回答:1

所以我有两个数据框,一个是另一个的严格子集(它是这个数据框和另一个数据框之间的交集)。数据框是变量和相关计数的列表。

我遇到的问题是,即使与绘制完全相同数据的直方图相比,生成的密度图对数据也没有意义

  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”只会进一步加剧问题

我敢肯定,密度图的工作原理很简单,但我一辈子都弄不明白。任何关于从哪里开始寻找的建议都将不胜感激

r ggplot2 histogram density-plot
1个回答
0
投票

解决了!

对于那些有类似问题的人,两条密度曲线之间的数据集差异导致内核具有不同的标准偏差(据我所知)。将带宽设置为一个设定值而不是 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()

给出这个结果

© www.soinside.com 2019 - 2024. All rights reserved.