2

1 つのプロットに 2 つのデータセットを含む散布図を作成できました。一方のデータ セットには、0 ~ 40 (緑) の範囲の X 軸があり、もう一方のデータ セットには 0 ~ 15 (赤) の範囲しかありません。

(http://s9.postimg.org/fw48s8rq7/Rplot.jpg)

このコードを使用して、(par(new) を使用して) 赤と緑のデータに個別にトレンド ラインを追加しました。

plot( x1,y1, col="red", axes=FALSE, xlab="",ylab="",ylim= range(0:1), xlim= range(0:40))
f <- function(x1,a,b,d) {(a*x1^2) + (b*x1) + d}
fit <- nls(y1 ~ f(x1,a,b,d), start = c(a=1, b=1, d=1)) 
co <- coef(fit)
curve(f(x, a=co[1], b=co[2], d=co[3]), add = TRUE, col="red", lwd=1)

私の問題は、赤いトレンド ラインを x 軸の 15 で止める方法が見つからないことです。私は周りを「グーグル」しましたが、私の問題について何も出てこなかったようです。エクセルのトレンドラインが盛りだくさん!fit<- に end= ステートメントを追加するのにうんざりしましたが、それもうまくいきませんでした。

助けてください、

十分な情報を投稿できたことを願っています。前もって感謝します。

4

2 に答える 2

1

ggplot を使ってみてください。次の例では、mtcars データを使用しています。

library(ggplot2)
ggplot(mtcars, aes(qsec, wt, color=factor(vs)))+geom_point()+ stat_smooth(se=F)

ここに画像の説明を入力

于 2014-10-01T16:55:14.503 に答える
0

from関数のおよびto引数を使用して、ベース グラフィックスでこれを行うことができますcurve(詳細については、ヘルプを参照してcurveください)。例えば:

# Your function
f <- function(x1,a,b,d) {(a*x1^2) + (b*x1) + d}

# Plot the function from x=-100 to x=100
curve(f(x, a=-2, b=3, d=0), from=-100, to=100, col="red", lwd=1, lty=1)

# Same curve going from x=-100 to x=0 (and shifted down by 1000 units so it's
# easy to see)
curve(f(x, a=-2, b=3, d=-1000), from=-100, to=0, 
      add=TRUE, col="blue", lwd=2, lty=1)

ここに画像の説明を入力

曲線の x 制限をプログラムで設定する場合は、次のようにすることができます (データ フレームが呼び出されdf、x 変数が呼び出されると仮定しますx)。

curve(f(x, a=-2, b=3, d=0), from=range(df$x)[1], to=range(df$x)[2], 
       add=TRUE, col="red", lwd=1, lty=1)
于 2014-10-01T20:04:02.943 に答える