我正在创建替换的直方图:时间上的第一,第二或第三子。因此,每个直方图都会在给定的“子编号”下显示给定分钟内的子编号。直方图对我来说很有意义,因为在大多数情况下它们都很平滑(我使用了1分钟的纸箱宽度)。没有什么看起来与众不同。但是,当我覆盖密度图时,左侧的尾巴会膨胀,因此我无法确定其中一张图的原因。
数据集包含替换,范围从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
为什么对于第一个Sub,如果不小于45,则密度图在尾部膨胀?还有为什么第二子的尾部的密度图不更膨胀?
侧面说明:我确实在交叉验证中询问了此问题,但由于涉及R而被告知,请改为在此处询问。 Here
所以我能够更改代码并获得以下信息:
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 ~ .)
这看起来更正确,至少现在适合数据集。但是,对于为什么首先出现这些问题,我仍然感到困惑。
答案 0 :(得分:1)
虽然没有数据样本可重现该错误,但您可以尝试
通过明确指定geom_density
使用的环境,确保其正确。您也可以尝试将指定密度(geom_density
)的代码行移到geom_histogram
之后。另外, y 轴标签可能是错误的-现在将其设置为 counts ,而值表明实际上是密度。
如何明确指定密度?
您可以通过直接在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 ..”