5

plot()Rの関数を使って散布図を作成しました。

このグラフに描画する可能性はありますか?

直線を追加してそのパラメータを取得したいのですが、私の意見abline()では不便な場合があります (多くの直線を描画し、最も適切な直線を選択したいと考えています)。

どうすればこのタスクを達成できますか?

4

3 に答える 3

8

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 で実行できます。

于 2011-09-02T13:38:47.577 に答える
7

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")

このコードで次のグラフを作成しました。

  • 太い赤い線は、2 回のマウス クリックを結ぶ線です。
  • 黒い線はablineこれらの点を通る
  • 青い線は、lm

ここに画像の説明を入力

警告 1: locator一部のグラフィック デバイスでのみ動作します。詳細については、を参照?locatorしてください。

警告 2: 手でフィットの線を引くのは、本当にばかげた考えかもしれません。代わりに、次のような回帰関数lmまたは次のような平滑化関数を使用してください。loess

于 2011-09-02T13:39:29.620 に答える
4

プロットに水平線または垂直線をインタラクティブに追加したい場合は、このlocator()関数を使用して、プロット上でマウスをクリックした位置をキャプチャすることができます。

たとえば、次のコードでは、既存のプロットに垂直線を繰り返し追加できます。

repeat {
  click.loc <- locator(1)
  if(!is.null(click.loc)) abline(v=click.loc$x)
  else break
}

これを水平線に適応させることができますabline(h=click.loc$y)

于 2011-09-02T13:39:23.300 に答える