2012-08-01 5 views
31

나는 벽에 머리를 내미는 아주 간단한 질문을합니다.R ggplot의 히스토그램에서 y 축을 비율로 정규화

y = .. 밀도를 사용하는 것과 같이 막대의 면적을 1로 합하는 대신 각 막대가 차지하는 비율 (0 : 1)을 반영하도록 막대 그래프의 y 축을 축척하고 싶습니다. .., 또는 가장 높은 막대를 갖는 것은 1 = y = .. ncount ..와 같습니다. 내 실패한 시도의

name value 
A 0.0000354 
B 0.00768 
C 0.00309 
D 0.00

하나 :

library(ggplot2) 
mydataframe < read.delim(mydata) 
ggplot(mydataframe, aes(x = value)) + 
geom_histogram(aes(x=value,y=..density..)) 

이 나에게 지역 1 히스토그램을 제공하지만,의 높이

내 입력과 같이 형식의 이름과 값의 목록입니다 2000 : 1000

try

및 y = .. ncount. . 내게는 가장 높은 바 1.0 히스토그램 제공하고 확장 나머지는 :

try

하지만 첫 번째 막대를하고 싶은 0.5의 높이를 가지고 있고, 다른 두 0.25.

R은 이러한 scale_y_continuous 사용을 인식하지 못합니다.

scale_y_continuous(formatter="percent") 
scale_y_continuous(labels = percent) 
scale_y_continuous(expand=c(1/(nrow(mydataframe)-1),0) 

도움 주셔서 감사합니다.

답변

46

..ncount..은 최대 1.0으로 재 측정되고, ..count..은 비 눈금 빈 수입니다. 제공

ggplot(mydataframe, aes(x=value)) + 
    geom_histogram(aes(y=..count../sum(..count..))) 

는 :

ggplot2 0.9로

enter image description here

+1

이것은 내가 찾고있는 것입니다. 당신은 멍청이처럼 느껴지고, 나는 정말로 당신에게 감사하고 있습니다! –

+6

나는 이런 식으로 할 수 있다는 것을 몰랐습니다. 이 팁 덕분에 저는'aes (y = 1-cumsum (.. count ..)/sum (.. count ..))를 사용하여 생존/신뢰성 (즉, 1-CDF) 히스토그램을 생성 할 수 있습니다. – dnlbrky

11

는 포맷터 기능의 많은 percent_format()을 포함하여 스케일 패키지에 이동되었습니다.

library(ggplot2) 
library(scales) 

mydataframe <- data.frame(name = c("A", "B", "C", "D"), 
          value = c(0.0000354, 0.00768, 0.00309, 0.000123)) 

ggplot(mydataframe) + 
    geom_histogram(aes(x = value, y = ..ncount..)) + 
    scale_y_continuous(labels = percent_format()) 
+0

설명해 주셔서 감사합니다. 내 형식이 왜 잘못 됐는지 궁금해서 ... –

관련 문제