我的基本问题是如何为geom_density设置bin编号(默认为30)。
我发现即使箱子已被修改,y轴的密度也没有变化。
以下是一个例子:
values <- runif(1000, 1, 100)
ind <- as.factor(rep(c(1:2), each=500))
inout <- as.factor(rep(c(1:2), each =500))
df <- data.frame(values,ind,inout)
ggplot(df,aes(x=values, ..density..)) +
geom_freqpoly(aes(group=interaction(ind,inout), colour=factor(inout)), alpha=1, bins=1)
密度应为1,因为箱号定义为1.但是,结果没有显示我的预期。
你知道我在这里想念的吗?有关ggplot geom_density的bin编号或bin阈值定义的提示吗?
非常感谢。
答案 0 :(得分:0)
在ggplot中,您不需要设置垃圾箱数量,而是使用binwidth
设置垃圾箱的宽度(默认值为范围/ 30)。 bin
不是geom_freqpoly理解的术语,因此在示例代码中会被忽略。
我认为使用范围0-1(而不是1-100)的示例将更好地说明您期望看到的内容:
values <- runif(1000, 0, 1) # generate values between 0 and 1
ind <- as.factor(rep(c(1:2), each=500))
inout <- as.factor(rep(c(1:2), each =500))
df <- data.frame(values,ind,inout)
ggplot(df, aes(x=values, ..density..)) +
geom_freqpoly(aes(group=interaction(ind,inout),
colour=factor(inout)), alpha=1) #use default binwidth, i.e. 1/30
这给出了一个类似于代码生成的图表
范围为1时,设置binwidth = 1
表示将有一个bin,其密度为1,值为0.5。请注意,现在值的范围是0.5到1.5,因为密度曲线下的面积必须总是为1.
ggplot(df, aes(x=values, ..density..)) +
geom_freqpoly(aes(group=interaction(ind,inout),
colour=factor(inout)), alpha=1, binwidth = 1) #binwidth = 1
如果你增加你随机生成的点数并减小binwidth(例如尝试0.1,0.01,0.001等),你就会越来越接近&#34;正方形&#34;概率密度函数,您期望均匀分布(例如as shown on wikipedia)