2017-02-12 76 views
0

我有一个变量可以取值为0或1的数据框中的每个条目。同时,每个值都是在一定条件下生成的。分组的barplot显示比例:如何跳过一些酒吧?

现在,我想绘制每个条件1的比例。请注意,这两个条件中的相应数据条目是不平衡的,即条件'a'可能有20个条目为0或1,而条件'b'可能有200个条目为0或1.

感谢这里几个帖子,我已经走到这一步:

x <- rbinom(378,1,.9) 
cond <- rbinom(378,1,.7)+1 
myDf <- data.frame(x,factor(cond,labels=c('a','b'))) 
names(myDf) <- c('val', 'cond') 
g <- ggplot(data.frame(myDf),aes(x=val, fill=cond)) 


g + geom_histogram(aes(y=0.5*..density..), binwidth=0.5, position=position_dodge()) 

example image

如果检查的情节,你很快就会看到一组棒是多余的。

- >如何跳过绘制x轴刻度0的条?它们已经在X轴刻度1处用条形图表示,因为我毕竟绘制了比例。

编辑:如果你有一个想法,比例差异如何可以测试显着性,请随时查看这个相关的question

+2

我会先计算出比例,然后用一个 '简单''geom_col'。 (x)sum(x)/ length(x)); df < - aggregate(val_cond,myDf,function(x)sum ggplot(df,aes(x = cond,y = val,fill = cond))+ geom_col()'。也许'fill'' aes'是多余的,因为你已经将'cond'映射到'x'。 – Henrik

+0

这是一个非常好的主意,它实现了我想要的。谢谢,但你为什么不把它当作'真正的答案'呢?在不同的注释中:填充是多余的,但有助于在没有检查X轴的情况下进行区分(我也有相同颜色映射到条件的相同花色的更多图)。 –

+0

很高兴听到它按照您希望的方式工作。请随时添加为答案。 – Henrik

回答

1

像Henrik在我的问题的评论中描述的那样,问题可以通过首先计算比例然后使用geom_col()绘制它们来解决。

基于在原来问题的代码:

df <- aggregate(val ~ cond, myDf, function(x) sum(x)/length(x)) 

ggplot(df, aes(x = cond, y = val, fill = cond)) + geom_col() 

enter image description here