お世話になっております。
ggplot2を使わずに近似直線の数式をplot画面内に表示する方法が分からず、困っております。
R
1 2y1 = as.data.frame(read.csv("・・・.csv") 3 4x = y1[,"・・・"] 5y = y1[,"・・・"] 6lm.obj = lm(y~x) 7 8# 近似直線の相関係数と切片 9a = lm.obj[["coefficients"]][["x"]] 10b = lm.obj[["coefficients"]][["(Intercept)"]] 11 12plot(x,y) 13abline(lm.obj) 14
近似直線に使用する切片と相関係数がlm.objに入っていることは確認できました。
しかし、そこからmtext()関数を用いてplot画面内に「y = ax+b」の形で表記させ、
近似直線付近にどうやって配置させるのかが分かりません。
ご教授のほど、よろしくお願い致します。
///// 11月1日 16時49分追記 /////
@KojiDoi様から頂いたご回答と、下記のURLを参考にここまで進みました。
R
1 2y1 = as.data.frame(read.csv("・・・.csv")) 3x = y1[,"・・・"] 4y = y1[,"・・・"] 5 6lm.obj = lm(y~x) 7a = c(lm.obj[["coefficients"]][["x"]]) # a = -0.0014341 8b = c(lm.obj[["coefficients"]][["(Intercept)"]]) # b = 0.629453 9 10plot(x,y) 11abline(lm.obj) 12 13# https://cell-innovation.nig.ac.jp/surfers/R_scatter_plot.htmlを参考にR^2値を描画 14mtext(substitute(paste(R^2,"=",x),list(x=round(summary(lm.obj)$r.squared,digits=5))),line=-5,col=1,adj=0) 15 16# R^2値を参考に近似直線の数式を描画(失敗) 17text(20,0.7,expression(paste(y=a*x+b), 18 list(a=lm.obj[["coefficients"]][["x"]],digits=5, 19 b=lm.obj[["coefficients"]][["(Intercept)"]],digits=5)),col=2)
現在、困っている箇所が図中赤文字の部分です。
@KojiDoi様より頂いたご回答と参考URLより相関係数R^2値をlm.objから抽出し描画することができました。
ところが近似直線でも同様に行おうとすると、lm.objから上手く抽出できず、
プログラムの後半部分(list以降)がテキストとして認識され、プログラムの前半部分に重なって描画されてしまいます(図中赤文字)。
どうすればtext・espression関数内でオブジェクトを数式に与えれるのかが分かりません。
ご教授のほど、よろしくお願い致します。
参考URL
① 散布図に近似直線(回帰直線)を付ける - NGS Surfer's Wiki(https://cell-innovation.nig.ac.jp/surfers/R_scatter_plot.html)
➁ Rによる作図のアドバイス - 玉木一郎(https://www.agr.nagoya-u.ac.jp/~seitai/document/R_intro2008/R_intro2008presen2.pdf)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。