2012-04-08 4 views
2

누구나 숫자 x 변수를 ggplot2의 요소로 그룹화 된 상대적인 빈도로 매핑하는 막대 그래프를 플로팅 할 수 있습니까? 중요한 것은 다음과 같습니다. 상대 주파수는 그룹별로 개의 주파수가 하나의 요소에 속하는 x- 값으로 계산되어야합니다. 이제 그들은 x 값의 수에 상대적인 x 값으로 계산됩니다. 에 그것을 보여ggplot2에서 피한 막대 그래프를 가진 플롯 상대도

, 예 :

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 축은 비율이 전체 데이터 세트를 나타냄을 나타냅니다. Y 축에 따라 가변 그룹의 주파수와 상기 제 같은 플롯을 제작하는

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

I 조준 : 여기서, I는 다음과 같은 코드가 사용된다.

미리 도움을 주셔서 감사합니다. 야나

+0

첫 번째 그래프는 면당 비율을 제공하지 않습니다. 데이터를 사전 요약 한 다음 ggplot에 전달해야합니다. –

답변

2

나는 당신과 같은 문제에 직면하고 있었고, 난 그것을 알아 냈 : 대신 실제로 ..count../sum(..count..), 플롯 ..density..*your_binwidth 를 음모, 빈 합계에 의해 생성 된 ..density.. 변수가 비례/bindwidth 기본적으로 동일하다. 코드는

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

-1; 이 답변을 제외하고는 매우 정확하지 않습니다 : http://stats.stackexchange.com/questions/4220/a-probability-distribution-value-exceeding-1-is-ok. 참조 : 올바른 해결책은 http://stackoverflow.com/questions/17655648/how-can-i-plot-the-relative-proportions-of-two-groups-using-a-fill-aesthetic-in을 참조하십시오. – russellpierce

관련 문제