r - 直方图和密度图不匹配
问题描述
我正在创建替换直方图:随着时间的推移,第 1、第 2 或第 3 个子。因此,每个直方图显示给定子数在给定分钟内的子数。直方图对我来说很有意义,因为它们大部分都是平滑的(我使用了 1 分钟的 bin 宽度)。没有什么看起来太不寻常了。但是,当我覆盖密度图时,左侧的尾部会膨胀,我无法确定其中一张图的原因。
数据集是替换的,范围从 1 分钟到最大时间。然后,我将此数据集切成两半,仅查看第 45 分钟后制作子的时间。我没有将这些数据折叠回去,我试图创建一个可重现的示例,但无法给出数据。
用于在 R 中创建的代码
## Filter out subs that are not in the second half
df.half<-df[df$PeriodId>=2,]
p<-ggplot(data=df.half, aes(x=time)) +
geom_histogram(aes(y=..density..),position="identity", alpha=0.5,binwidth=1)+
geom_vline(data=sumy.df.half,aes(xintercept=grp.mean),color="blue", linetype="dashed", size=1)+
geom_density(alpha=.2)+
facet_grid(SUB_NUMBER ~ .)+
scale_y_continuous(limits = c(0,0.075),breaks = c(seq(0,0.075,0.025)),
minor_breaks = c(seq(0,0.075,0.025)),name='Count')
p
为什么,如果没有小于 45 的值,第一个子的密度图会在尾部膨胀?另外,为什么第二个潜艇尾部的密度图没有更加膨胀?
旁注:我确实在交叉验证时问过这个问题,但由于它涉及 R,所以被告知要在这里问。这里
因此,我能够更改代码并获得以下信息:
ggplot() +
geom_histogram(data=df.half, aes(x=time,y=..density..),position="identity", alpha=0.5,binwidth=1)+
geom_density(data=df.half,aes(x=time,y=..density..))+
geom_vline(data=sumy.df.half,aes(xintercept=grp.mean),color="blue", linetype="dashed", size=1)+
facet_grid(SUB_NUMBER ~ .)
这看起来更正确,至少现在适合数据集。但是,我仍然对为什么首先会出现这些问题感到困惑。
解决方案
虽然没有数据样本来重现错误,但您可以geom_density
尝试通过明确指定来确保所使用的环境是正确的。您也可以尝试将指定密度 ( geom_density
)的代码行移到geom_histogram
. 此外,y轴标签可能是错误的 - 它现在设置为counts,而值表明这实际上是density。
我将如何明确指定密度?
您可以通过指定data
,aes
并position
直接在geom_density
函数调用中显式指定密度参数,因此它将使用这些声明而不是继承的参数:
ggplot() +
geom_histogram(data=df.half, aes(x=time,y=..density..),position="identity", alpha=0.5,binwidth=1)+
geom_density(data=df.half,aes(x=time,y=..density..))+
geom_vline(data=sumy.df.half,aes(xintercept=grp.mean),color="blue", linetype="dashed", size=1)+
facet_grid(SUB_NUMBER ~ .)
我不明白它是如何发生的,
我认为在您的初始代码中geom_density
,您只明确指定了alpha
参数。因此,对于它需要的所有其余参数,(data
,aes
等position
)它使用继承的参数/参数,显然它没有正确继承它们。可能它试图使用geom_vline
函数 -中的数据参数sumy.df.half
,或者被参数“..density..”中的语法混淆了
推荐阅读
- arrays - 使用 each_with_slice 拆分数组,但在结果数组中保留特定值(一个衬里)
- filter - 如何使用 ffmpeg 过滤器音量在 10 秒后静音 2 秒?
- node.js - 无法在 Azure App 服务上部署 React JS 应用程序
- android - 无法在类型为 UINT8 的 TensorFlowLite 张量和类型为 Java 的对象之间转换
- python - 计算重叠像素pytorch的中位数
- sql - 获取整数的无效输入语法:Vertica 中的“n/a”
- unicode - Autohotkey - 如何存储 unicode 并使用它?
- android - 让主线程等待协程 kotlin
- postgresql - 由于表上的锁定,架构 pg_dump 失败
- c# - 需要从按钮单击方法返回一个变量并在另一个方法中重用它