2017-02-12 51 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