R語言代寫給散點圖添加Polynomial regression 擬合曲線和公式

這篇文章原本是要寫進我上一篇關於Polynomial regression實現的文章裏的,但一方面因爲這個給散點圖裏添加擬合曲線和公式偏向畫圖,裏面細節較多,相對上一節內容獨立;另外一方面,爲了使篇幅不致過長,讀者看起來辛苦,因此就分開成兩篇文章。本篇銜接上一篇,因此數據以及模型都是跟上一篇裏同樣的,這裏再也不贅述,讀者可閱讀我上一篇的內容,因此,這裏只會涉及到如何在散點圖裏添加擬合的曲線以及公式。git

先來看看咱們最終的效果圖:express

image.png微信

(我直接截圖的,座標橫軸是x,縱軸是y,這裏被截掉了)app

畫圖的代碼:函數

#下面這個函數定義咱們後面要添加的公式 [1] lm_eqn = function(df){ [2] m=lm(Num_complex ~ poly(k_value, 2), df) # 2rd degree polynomial [3] eq <- substitute(italic(y) == a + b %.% italic(x) + c %.% italic(x)^2*","~~italic(r)^2~"="~r2, [4] list(a = format(coef(m)[1], digits = 3), [5] b = format(coef(m)[2], digits = 3), [6] c = format(coef(m)[3], digits = 3), [7] r2 = format(summary(m)$r.squared, digits = 3))) [8] as.character(as.expression(eq)) [9] } # 先建立一個散點圖 [10] p <- ggplot(dat,aes(x=x,y=y)) + geom_point() # [11] p + stat_smooth(method='lm',formula = y~poly(x,2),colour='red') + [12] scale_x_continuous(limits = c(1,19), breaks = c(seq(1,19,b=2))) + [13] theme(axis.text=element_text(colour = 'black',size = 12), axis.title=element_text(size = 14)) + [14] annotate("text", x=2, y=100, label=lm_eqn(dat), hjust=0, size=6,family="Times",parse=TRUE)

 

爲了方便解釋,我給上面代碼加了行號。首先,1-9 行這裏定義了一個函數,函數最終返回的是一個強制字符轉換的expression對象(eq)。而 eq則是由substitute函數產生的結果,是一個call類型(調用類型,或者叫未求值表達式類型),這裏的概念都比較複雜,我暫時也搞不清楚,仍是直接看看是怎麼編輯這個表達式的吧。主要在第3行,%.% 這個符號是表示 「點乘」,italic(x) 表示斜體的 x平方,2 後面的星號是必需的,並不被解釋,多是用來分割字符和表達式的,「~」符號表示空格,一個表明一個空格。而後是4~7行,這裏是一個 list,裏面列出了第三行表達式中要被替換的變量的值(好比a, b, c,等)。第10行,畫一個散點圖,全部都是默認設置;第11行,這裏是爲散點圖根據二次多項式模型擬合一條平滑的曲線;第12-13行是調節座標軸及座標軸文字的,這裏就很少說了,比較簡單,能夠查看ggplot2 cookbook;第14行,是添加公式的語句,"text" 表示添加的元素類型(這裏是添加text),x 和 y 設定添加text到什麼位置(座標);label則是要添加的公式內容,這裏調用前面(1-9行定義的表達式)定義的函數;parse這個設置我不知道怎麼說,由於不太懂底層原理,但我測試了,必需加上,否則不會解析 前面定義的表達式。post

 

若是您有任何疑問,請在下面發表評論。 

  

大數據部落 -中國專業的第三方數據服務提供商,提供定製化的一站式數據挖掘和統計分析諮詢服務測試

統計分析和數據挖掘諮詢服務:y0.cn/teradat(諮詢服務請聯繫官網客服大數據

點擊這裏給我發消息QQ:3025393450ui

 

​QQ交流羣:186388004 spa

【服務場景】  

科研項目; 公司項目外包;線上線下一對一培訓;數據爬蟲採集;學術研究;報告撰寫;市場調查。

【大數據部落】提供定製化的一站式數據挖掘和統計分析諮詢

 

歡迎關注微信公衆號,瞭解更多數據乾貨資訊!
 
 

歡迎選修咱們的R語言數據分析挖掘必知必會課程!

相關文章
相關標籤/搜索