plot()
Rの関数を使って散布図を作成しました。
このグラフに描画する可能性はありますか?
直線を追加してそのパラメータを取得したいのですが、私の意見abline()
では不便な場合があります (多くの直線を描画し、最も適切な直線を選択したいと考えています)。
どうすればこのタスクを達成できますか?
RStudio とこの例を見てください。
library(manipulate)
data = matrix(rnorm(20), ncol = 2)
example <- function(data, a, b){
plot(data[,1],data[,2])
abline(a = a, b = b)
}
manipulate(
example(data, a, b),
a = slider(-5,5),
b = slider(-5,5)
)
これにより、プロットに新しい線が追加され、その勾配と切片を微調整できるようになります。
これは、このページの例に触発されました: http://support.rstudio.org/help/discussions/questions/106-rstudio-manipulate-command
これにはRStudioをインストールする必要があることに注意してください(manipulate
パッケージに同梱されていると思います)。詳細については、サイトを参照してください。
他のソリューションはlocator
、ベース R で実行できます。
locator()
プロットをクリックしたときにマウス ポインターの座標を取得できる関数 を使用します。次に使用します
plot(cars)
xy <- locator(n=2)
lines(xy, col="red", lwd=5)
lm(y~x, xy)
abline(coef(lm(y~x, xy)))
coef(lm(y~x, xy))
(Intercept) x
33.142094 1.529687
もちろん、データに線を当てはめる正しい方法は、適切なモデルを使用することです。でそれを行う方法は次のlm
とおりです。
abline(coef(lm(dist~speed, cars)), col="blue")
このコードで次のグラフを作成しました。
abline
これらの点を通るlm
警告 1: locator
一部のグラフィック デバイスでのみ動作します。詳細については、を参照?locator
してください。
警告 2: 手でフィットの線を引くのは、本当にばかげた考えかもしれません。代わりに、次のような回帰関数lm
または次のような平滑化関数を使用してください。loess
プロットに水平線または垂直線をインタラクティブに追加したい場合は、このlocator()
関数を使用して、プロット上でマウスをクリックした位置をキャプチャすることができます。
たとえば、次のコードでは、既存のプロットに垂直線を繰り返し追加できます。
repeat {
click.loc <- locator(1)
if(!is.null(click.loc)) abline(v=click.loc$x)
else break
}
これを水平線に適応させることができますabline(h=click.loc$y)