55

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

y = ..density ..を使用する場合のように、棒の面積の合計を1にするのではなく、各ビンが構成する比率(0から1)を反映するようにヒストグラムのy軸をスケーリングしたいと思います。または、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です。

試す

y = .. ncount ..は、最高のバー1.0のヒストグラムを提供し、残りはそれにスケーリングされます。

試す

ただし、最初のバーの高さを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)

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

4

5 に答える 5

79

..ncount..は最大1.0に再..count..スケーリングされますが、はスケーリングされていないビンカウントであることに注意してください。

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

これは次のようになります。

ここに画像の説明を入力してください

于 2012-08-01T20:34:18.920 に答える
31

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

ggplot(mydataframe, aes(x = value)) +
  geom_histogram(aes(y = stat(count / sum(count))))
于 2018-08-14T23:07:53.203 に答える
22

ggplot2 0.9以降、。を含む多くのフォーマッター関数がscalesパッケージに移動されました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())
于 2012-08-01T20:37:15.493 に答える
0

y軸を1000で割るために、軸をスケーリングしたかったので、次のようにしました。

ggplot(mydataframe, aes(x=value)) +
  geom_histogram(aes(y=..count../1000))
于 2020-07-16T16:00:50.797 に答える
0

上記の回答を要約すると:

library(tidyverse)

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

ggplot(mydataframe, aes(x = value)) +
  geom_histogram(aes(y = stat(count / sum(count)))) +
  scale_y_continuous(labels = scales::percent_format()) +
  labs(x="", y="")

ここに画像の説明を入力してください

于 2021-08-11T15:20:14.743 に答える