2011-08-24 20 views
9

おそらくFitting a density curve to a histogram in Rに似た質問があります。私は、このコマンドを使用して7つのヒストグラムを作成しているqplot使用:qplotで作成したヒストグラムにガウス曲線を追加するには?

を各スライスについて、私は、フィッティングガウス曲線を追加したいと思います。 lines()メソッドを使用しようとすると、エラーが発生します。

Error in plot.xy(xy.coords(x, y), type = type, ...) : 
plot.new has not been called yet 

正しく実行するコマンドは何ですか?

+1

** gpplot2 **と**格子**パッケージで使用されるようなあなたは、グリッドグラフィックとベースのグラフィックス機能( 'ライン()'など)を混在させることはできません。 –

答えて

14

stat_functionを試しましたか?

+ stat_function(fun = dnorm) 

はおそらく数ではなく、密度の値をプロットするためにaes(y = ..density..)を使用してヒストグラムをプロットすることをお勧めします。

this質問には多くの有用な情報があり、異なるファセット上の異なる通常の曲線をプロットするためのアドバイスが含まれています。と別のデータフレームを作成し、私はにリンクされている質問から

ggplot(data = dat,aes(x = x)) + 
    facet_wrap(~a) + 
    geom_histogram(aes(y = ..density..)) + 
    stat_function(fun = dnorm, colour = "red") 

enter image description here

dat <- data.frame(x = c(rnorm(100),rnorm(100,2,0.5)), 
        a = rep(letters[1:2],each = 100)) 

オーバーレイ各ファセット上の単一の正規密度:ここ

は、いくつかの例があります異なる正常曲線:

grid <- with(dat, seq(min(x), max(x), length = 100)) 
normaldens <- ddply(dat, "a", function(df) { 
    data.frame( 
    predicted = grid, 
    density = dnorm(grid, mean(df$x), sd(df$x)) 
) 
}) 

そして、別途geom_lineを使用してそれらをプロットします

ggplot(data = dat,aes(x = x)) + 
    facet_wrap(~a) + 
    geom_histogram(aes(y = ..density..)) + 
    geom_line(data = normaldens, aes(x = predicted, y = density), colour = "red") 

enter image description here

+0

私はRで非常に初心者です。ちょうどそれを数日間持ちます。私はそれを見てみましょう、ヒントのおかげで! – mkk

+0

Muito Bom!私はajudou horrores !!!! – Jean

5

ggplot2は、基本グラフィックスとは異なるグラフィックパラダイムを使用しています。 (あなたはそれでgridグラフィックスを使用することができますが、最良の方法は、プロットに新しいstat_function層を追加することである。ggplot2コードは次の通りである。私はこれがqplotを使用して動作させることができなかった

ますが、 ggplotへの移行は、最も重要な違いは、あなたのデータは data.frame形式でなければならないということである、合理的straighforwardある

はまた、yの美的aes=aes(y=..density..))の明示的なマッピングを注意してください - 。これはslighly珍しいですが、stat_function結果を受け取り、それをデータにマッピングします:

library(ggplot2) 
data <- data.frame(V1 <- rnorm(700), V2=sample(LETTERS[1:7], 700, replace=TRUE)) 
ggplot(data, aes(x=V1)) + 
    stat_bin(aes(y=..density..)) + 
    stat_function(fun=dnorm) + 
    facet_grid(V2~.) 

enter image description here

関連する問題