用ggplot2中的躲避条形图绘制相对频率

时间:2012-04-08 15:44:32

标签: r ggplot2 frequency

任何人都可以回答我如何绘制一个条形图,它将数字x变量映射到其相对频率,该频率按ggplot2中的因子分组?重要的是: 应将相对频率计算为属于一个因子的x值内的分组频率。现在它们被计算为相对于个x值的x值。

为了说明一个例子:

library(ggplot2)

data <-data.frame(x=runif(100,0:1), f=sample(1:3,100,replace=TRUE))
data$f <-factor(data$f)
p <-ggplot(data, aes(x, colour=f, fill=f, group=f)) +
    xlim(0,1) +
    scale_y_continuous('Relative Frequency', formatter='percent') # or labels=percent

让我们将它们划分为多面。然后y轴显示比例是按组计算的。我用了这段代码:

p + stat_bin(aes(y=..count../sum(..count..)), position='dodge', binwidth=0.2) +         facet_grid(~f)

让我们把它们躲避。 y轴显示比例指的是整个数据集。在这里,我使用了以下代码:

p + stat_bin(aes(y=..count../sum(..count..)), position='dodge', binwidth=0.2)

我的目标是创建一个类似于第二个的图,每个组的变量的频率在y轴上。

非常感谢您的帮助! 亚娜

1 个答案:

答案 0 :(得分:2)

我遇到的问题和你的问题一样,我想出来了:不是密谋..count../sum(..count..),而是密谋..density..*your_binwidth 实际上,bin stat创建的..density..变量基本上等于比例/绑定宽度。 您的代码变为:

p + stat_bin(aes(y=..density..*0.2), position='dodge', binwidth=0.2)