2015-07-21 2 views
0

Привет всем Я испытываю трудности с ggplot2.гистограмма ggplot2 неправильная частота

Я пытаюсь сделать гистограмму, представляющую пример: процент секса (мужчины и женщины = y) с раком (C) на 5 возрастных классов (A = x).

pp <- ggplot(data=base, aes(x=AGE, y=factor(C), fill=Sex)) + 
    geom_bar(aes(y = (..count..)/sum(..count..)))+ 
    scale_fill_grey()+ 
    theme_bw() 
pp 

У меня есть гистограмма, но с неправильной частотой. Кто-нибудь может сказать мне, почему?

У меня трудное время решить его самостоятельно.

Заранее спасибо Peter

+0

http://docs.ggplot2.org/current/geom_histogram.html – CMichael

ответ

0

Возможно использовать geom_histogram:

PP <- ggplot(base[base$C==TRUE,], aes(x=AGE, fill=Sex)) 
PP <- PP + geom_histogram() 

NB: Я понятия не имею, если C кодируется как Boolean.

UPDATE - частота получается следующим образом:

PP <- ggplot(base[base$C==TRUE,], aes(x=AGE, fill=Sex)) 
PP <- PP + geom_histogram(aes(y = ..density..)) 

UPDATE - уточнение OP указывает, что он не ищет гистограммы в конце концов:

Так что для нужного barplot вам нужно изменить свои данные немного и создать обобщенную версию, например, с помощью plyr::ddply():

require(plyr) 
baseA <- ddply(base, .(AGE,Sex), summarize, cancerShare=sum(C==TRUE)/length(C)) 

После того, что мы можем построить гистограмму как Тхи s:

g <- ggplot(baseA,aes(x=as.factor(AGE),y=cancerShare,fill=Gender)) 
g <- g + geom_bar(stat="identity",position="dodge") 
g 
+0

Да CMicheal C является булевой. Танки четыре ваш ответ. Но дело в том, что я бы хотел иметь частоту. – Peter

+0

см. Мое обновление выше – CMichael

+0

Спасибо CMichael Я пробовал это, но, к сожалению, он до сих пор не дает мне процентов для каждой группы :(Я также пробовал: aes (y = (..count ..)/sum (.. count ..))) + – Peter

 Смежные вопросы

  • Нет связанных вопросов^_^