2012-08-01 58 views
31

私は非常に単純な質問をして、私の頭を壁に叩いてしまいました。R ggplotのヒストグラムのy軸を割合に正規化する

ヒストグラムのy軸を、各ビンが占める割合(0〜1)を反映するように、y = .. y = .. ncountと同じように、最高のバーを1とします。私の失敗の

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の高さを有し、他の2つ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

説明をありがとうございます!私は何が私のフォーマットに間違っているのだろうかと思っていた... –

関連する問題