2017-07-06 12 views
-1

特にstat_functionでggplotに問題があります。ggplotのStat_functionが機能しません

私は分布をプロットする必要があります。次に、カイ2乗理論分布を計算し、それを実際のプロットにプロットします。 はggplotがなければ、私はこれを行うggplotと今

res.lk <- apply (as.matrix(baf_matrix$res.fst), 2, FUN = function (x) baf_matrix$res.fst*4/(mean(baf_matrix$res.fst))) 

hist(res.lk, probability = T, breaks = 100,main = "LK distribution",  
xlab ="LK") 
x = c(0:as.integer(max(res.lk))) 
lines(x,dchisq(x,df=4),lwd=3,col="orange") 

がそれを作るためのシンプルなライン()でこれを作った:

Y = as.data.frame(res.lk)

ggplot(data = Y , aes(x = Lk)) + geom_histogram(binwidth=.1, color="black", fill="white") + stat_function(fun = dchisq(c(0:as.integer(max(res.lk))),df=4), lwd = 3, col = "orange") + theme_bw()

をそして、私はこのエラーを取得します:警告メッセージ: 計算に失敗しましたstat_function(): 'what'は関数または文字列でなければなりません

これは私のデータは次のようになります。 The Lk distribution

私はそれを修正しようとしているが、私はどのように見つけることができませんでした。誰かが私を助けてくれる?事前に多くありがとうございます。

+0

[ここ](https://stackoverflow.com/questions/5688082/ggplot2-overlay-histogram-with-density-curve/34307133#34307133)。 – Axeman

答えて

1

注:私たちが作業するためのサンプルデータが含まれていると、実際に役立ちます。

引数funは関数でなければなりません。あなたはベクトルを渡しています。また、配電線はデータ内の単一の値にのみ依存するため、annotateを使用する方が良いでしょう。

xseq <- seq(max(Y$res.lk)) 

ggplot(data = Y, aes(x = Lk)) + 
    geom_histogram(binwidth = .1, color="black", fill="white") + 
    annotate(
    geom = "line", 
    x = xseq, 
    y = dchisq(xseq, df = 4), 
    width = 3, 
    color = "orange" 
    ) + 
    theme_bw() 
関連する問題