2016-05-26 9 views
0

私は非常に簡単な質問がありますが、これまでのところ簡単な解決策は見つかりませんでした。私がフィットさせて、yが特に価値があるx軸の値を表示したいデータがあるとしましょう。この場合、y = 0のときにxの値が何であるかを考えてみましょう。モデルはフィッティングのために非常に単純なy〜xですが、そこからxの値を推定する方法はわかりません。とにかく、単純なフィッティングからx値をプロットし、プロット内にそれを記入してください

サンプルデータ

library(ggplot2) 
library(scales) 
df = data.frame(x= sort(10^runif(8,-6,1),decreasing=TRUE), y = seq(-4,4,length.out = 8)) 

ggplot(df, aes(x = x, y = y)) + 
    geom_point() + 
    #geom_smooth(method = "lm", formula = y ~ x, size = 1,linetype="dashed", col="black",se=FALSE, fullrange = TRUE)+ 
    geom_smooth(se=FALSE)+ 
    labs(title = "Made-up data") + 
    scale_x_log10(breaks = c(1e-6,1e-4,1e-2,1), 
       labels = trans_format("log10", math_format(10^.x)),limits = c(1e-6,1))+ 
    geom_hline(yintercept=0,linetype="dashed",colour="red",size=0.6) 

私は10^-10形式に1E-10の入力に変換し、プロット上でそれに注釈を付けたいと思います。私がプロットに示したように。

ありがとうございます!

enter image description here

+2

'ggplot2'は、グラフィカルなツールではなく、モデリングツールです。モデルを作り直してから 'x'を使って' predict'を使います。 –

+0

これをプロットに追加します。 –

+0

完璧;あなたはモデリングツールではないことも知っていると思いますか?これは、構築されたモデルを使用できる数式を定義できるためではありません。あなた自身でそれを再作成する必要があります。それはばかげているように見えますが、この方法で、あなたはあなたがしていることを正確に知っています。 –

答えて

2

geom_smooth()は滑らかなラインを計算するR関数を使用するので、あなたはggplot()環境外の予測値を得ることができます。 1つの選択肢は、予測されるy値が0である場合に、approx()を使用してx値の線形近似を得ることである。

# Define formula 
formula <- loess(y~x, df) 

# Approximate when y would be 0 
xval <- approx(x = formula$fitted, y = formula$x, xout = 0)$y 

# Add to plot 
ggplot(...) + annotate("text", x = xval, y = 0 , label = yval) 

enter image description here

+0

あなたの答えをありがとう。その数字のフォーマットをx軸と同じようにするにはどうすればよいですか? – Alexander

+0

あなたはこの質問に対する答えとしてあなたの解決策を教えていただけますか? – Alexander

+0

ここをクリックしてください:http://stackoverflow.com/questions/11610377/how-do-i-change-the-formatting-of-numbers-on-an-axis-with-ggplot – mtoto

関連する問題