web-dev-qa-db-ja.com

R ggplotのヒストグラムのY軸を比率に正規化する

私は非常に簡単な質問があり、壁に頭をぶつけます。

Y = .. density ..を使用してバーの面積を1にする代わりに、ヒストグラムのy軸をスケーリングして、各ビンが占める割合(0〜1)を反映させます。または、y = .. ncount ..のように、最高のバーを1にします。

私の入力は、次のような形式の名前と値のリストです。

name    value
A   0.0000354
B   0.00768
C   0.00309
D   0.000123

私の失敗した試みの1つ:

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)

助けてくれてありがとう。

44
First Last

ご了承ください ..ncount..は最大1.0に再スケーリングし、..count..は、スケーリングされていないビンカウントです。

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

与えるもの:

enter image description here

62
Andy

Ggplot2 0.9では、percent_format()を含む多くのフォーマッタ関数がscalesパッケージに移動されました。

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())
15
aaronwolen

最新かつ最高のggplot2バージョン3.0.0の時点で、形式が変更されました。これで、_.._をいじるのではなく、stat()y値をラップできます。

_ggplot(mydataframe, aes(x = value)) +
  geom_histogram(aes(y = stat(count / sum(count))))
_
13
CephBirk