2012-02-14 54 views
0

我有以下的數據幀獲得百分比使用直方圖磨製使用時

z x y 
1 1 a 
2 2 a 
3 1 a 
4 2 a 
5 1 b 
6 9 b 
7 9 b 
8 8 b 
9 7 b 

當我做

p = ggplot(z,aes(x,group=y)) + geom_histogram(aes(y = ..density..,group=y)) +  facet_grid(y ~ .) 
p 

我得到的方位圖,但不與y軸的百分比對於z $ y中的每個符號。

基本上,我想要一個直方圖圖表,但百分比顯示每個z $ y值內的頻率分佈,即a,b。在這種情況下,在'a'下,50%爲1且50%爲2,在'b'下,20%爲1,40%爲9,20%爲7,20%爲8。希望使用faceting將其繪製爲直方圖。

回答

2

這不是直方圖(沒有密度估計),而是條形圖。

d <- data.frame( 
    value = c(1,2,1,2,1,9,9,8), 
    group = c(rep("a",4),rep("b",4)) 
) 
# With counts 
ggplot(d) + geom_bar(aes(factor(value))) + facet_grid(group ~ .) 
# With percentages 
ggplot(d) + 
    geom_bar(aes(factor(value), (..count..)/sum(..count..))) + 
    scale_y_continuous(formatter = 'percent') + 
    facet_grid(group ~ .) 

注意:在較新版本的GGPLOT2我們將使用scale_y_continuous(labels = percent_format())代替,並確保加載尺度包。

+0

工程很好。非常感謝。 – broccoli 2012-02-15 00:34:40

+1

@lajkssfjd - 高興的文森特能夠幫助你。爲了讓其他人知道他的答案解決了您的問題,您可以點擊左邊的複選標記。 (爲了標記他的答案是好的,你也可以,如果你願意,可以給它一個upvote。)謝謝! – 2012-02-15 01:08:36

+4

對於整個數據集而不是小平面子集,百分比是縮放的,即在'a'中,這些值都是25%而不是50%。 – James 2013-09-03 15:29:03

相關問題