2016-05-29 10 views
0

私は時間の経過とともに脳の萎縮を表す軌跡線を作ろうとしています。私は2つの異なるグループのための2つの特定の軌道を持っており、私はBrain VolumeによってAgeの散布図にこれらの2つの線(比較のために)をそれぞれ追加したいと思います。ggplot2のgeom_pointにstat_functionレイヤーを追加する

これらのラインのy切片は565と286ですが、stat_functionレイヤーを使用すると、非常に奇妙な値で切片を配置しているように見え、全体的な散布図が壊れてしまいます。もちろん、私はylim()を使うことができますが、関数は表示されません。

マイコード:ここで

ggplot(na.omit(GRAPHICSMATRIX), aes(x=Age, y=FrontalPole, colour=Dx_Bl)) + 
    geom_point(size=3) + 
    ylim(0, 500) + 
    stat_function(fun=function(x) {-2.129*x^3 - 23.456*x + 565}, colour="blue", size=1) + 
    stat_function(fun=function(x) (286)+((-0.997)*(x)^3), colour="darkred", size=2) 

はグラフです。

Correct Scatterplot

Incorrect Scatterplot with two stat_function()

+0

ggplot2コードの外で 'GRAPHICSMATRIX $ Age'を入力として' function(x){-2.129 * x^3 - 23.456 * x + 565} 'を実行しましたか? – hrbrmstr

+0

y切片は妥当な数ですが、それらは 'x = 0'で評価されます。あなたのプロットは 'x = 60'の周りから始まります。この場合、関数は216,000のオーダの結果を返します。 'x = 60'を差し込むだけで、それを見ることができます。 –

答えて

0

はい、あなたのy切片は、それぞれ565286であるが、これらの値は、いつx=0ためのものです。あなたの質問に表示されるプロットは、x=55から始まります。この場合、我々は我々が得るあなたの機能のためにx=55に差し込むとき:

286 + -0.997*(55^3) = 165,589.875

-2.129(55^3) - 23.456(55) + 565 = 354,937.455

だから何を考えていることはあなたのy切片が、実際にはないです。私はあなたが stat_functionsが正しく働いていると思います。結果が気に入らなければ、プロットしたい機能を再考する必要があると思います。

+0

ありがとうございます。私のモデルは55〜90歳の人口統計に基づいていましたが、モデル計算は0の切片を仮定しています。そこで、関数を右に55にシフトすることでこの問題を解決しました。 (x-55)^ 2) ありがとうございました! –

関連する問題