このフォーラムは、コードを作成する上ですでに多くの助けになっており、経験的な正規曲線でオーバーレイされた特定の変数のヒストグラムを返すことが期待されていました。 ggplot2とstat_functionを使用してコードを記述しました。残念ながら、コードは正しいヒストグラムでプロットを生成しましたが、正規曲線はゼロでの直線です(次のコードで生成されたプロットの赤い線)。
この最小限の例では、mtcarsデータセットを使用しました。元のデータセットでも、ggplotとstat_functionの同じ動作が観察されます。
これはコードが書かれて使用されているものです:
library(ggplot2)
mtcars
hist_staff <- ggplot(mtcars, aes(x = mtcars$mpg)) +
geom_histogram(binwidth = 2, colour = "black", aes(fill = ..count..)) +
scale_fill_gradient("Count", low = "#DCDCDC", high = "#7C7C7C") +
stat_function(fun = dnorm, colour = "red")
print(hist_staff)
また、dnormを指定しようとしました。
stat_function(fun = dnorm(mtcars$mpg, mean = mean(mtcars$mpg), sd = sd(mtcars$mpg))
それもうまくいきませんでした-引数が数値でないことを示すエラーメッセージが返されました。
皆さんが私を助けてくれることを願っています!よろしくお願いします!
最高、ジャニック
曲線とヒストグラムは異なるyスケールであり、stat_function
のヘルプページをチェックしていません。そうでない場合は、例に明確に示されているように、引数をlist
に配置します。また、最初のaes
呼び出しでggplot
を正しく実行していません。 SOでggplotを少しずつ学ぶのではなく、チュートリアルや本(または少なくともヘルプページ)を増やすことを心からお勧めします。
stat_function
argの問題とggplot``aes
の問題を修正したら、y軸のスケールの違いに取り組む必要があります。これを行うには、ヒストグラムのyを切り替えて、基になるstat_bin
計算データフレームの密度を使用する必要があります。
library(ggplot2)
gg <- ggplot(mtcars, aes(x=mpg))
gg <- gg + geom_histogram(binwidth=2, colour="black",
aes(y=..density.., fill=..count..))
gg <- gg + scale_fill_gradient("Count", low="#DCDCDC", high="#7C7C7C")
gg <- gg + stat_function(fun=dnorm,
color="red",
args=list(mean=mean(mtcars$mpg),
sd=sd(mtcars$mpg)))
gg