每天學習一點R:40.折線圖和趨勢線擬合

2021-03-06 紅皇后學術

今天介紹幾個用R繪製折線圖、點線圖或者在散點圖的基礎上添加擬合趨勢線的方法 (PS:基於base的方法,非ggplot)。

matplot

第一個要介紹的是matplot函數,這是一個類似於plot的函數,其繪圖參數也與plot非常類似。

matplot(x, y, type = "p", lty = 1:5, lwd = 1, lend = par("lend"),
pch = NULL,
col = 1:6, cex = NULL, bg = NA,
xlab = NULL, ylab = NULL, xlim = NULL, ylim = NULL,
log = "", ..., add = FALSE, verbose = getOption("verbose"))

各參數意義:

具體個參數的設置可以參考之前的推文《plot和par函數繪圖詳解》。

⚠️x和y兩個向量內元素的數目要一致,如果只提供了一個向量,則默認為y,x以由1開始的連續整數代替。

matplot允許繪圖數據中包含NA。

接下來給幾個繪圖的例子,先做一個最簡單的。

matplot((-4:5)^2, main = "Quadratic")

繪製一個點線圖。

sines <- outer(1:20, 1:4, function(x, y) sin(x / 20 * pi * y))
matplot(sines, pch = 1:4, type = "o", col = rainbow(ncol(sines)))

修改圖中點的形狀並填充顏色。

matplot(sines, type = "b", pch = 21:23, col = 2:5, bg = 2:5,
main = "matplot(...., pch = 21:23, bg = 2:5)")

plot函數添加趨勢線

擬合曲線的後期添加可以使用abline和lines函數完成,首先我們要使用plot函數繪製一個散點圖。

attach(mtcars)
plot(mtcars$wt,mtcars$mpg,
main="Basic Scatter plot of MPG vs.Weight",
xlab="Car Weight(lbs/100)",
ylab="Miles Per Gallon",
pch=19)

abline函數向圖像中添加的是一條直線,例如數據的一元線性回歸擬合結果。

abline(lm(mtcars$mpg~mtcars$wt),col="red",lwd=2,lty=1)

lines函數可以向圖像中添加曲線,例如數據的變化規律擬合曲線。

lines(lowess(mtcars$wt,mtcars$mpg),col="blue",lwd=2,lty=2)

plotmeans

最後介紹一下gplots包的plotmeans函數,其特點是可以在繪製點線圖的同時添加散點的誤差棒

plotmeans(formula, data=NULL, subset, na.action,
bars=TRUE, p=0.95, minsd=0, minbar, maxbar,
xlab=names(mf)[2], ylab=names(mf)[1], mean.labels=FALSE,
ci.label=FALSE, n.label=TRUE, text.n.label="n=",
digits=getOption("digits"), col="black", barwidth=1,
barcol="blue", connect=TRUE, ccol=
col, legends=names(means), xaxt, use.t=TRUE,
lwd=par("lwd"), ...)

各參數意義:

formula為繪圖的表達公式;

data為繪圖數據;

subset定義是否只採用一部分數據進行繪圖;

na.action定義當數據有含有NA時如何處理;

bars是否繪製置信區間;

p置信區間的置信水平,默認為0.95;

minsd允許的每組數據標準偏差最小值;

minbar和maxbar為允許的誤差限的最小值和最大值;

xlab和ylab為x和y軸標籤名稱;

mean.labels定義代表平均數的圓形是否要被特定的文字標籤替換;

ci.label是否在誤差限的兩端顯示準確的數字;

n.label是否顯示每組數據中觀察值的個數;

text.n.label定義觀察值個數的顯示形式;

digits定義有效數字的個數;

col定義代表均值的圓形的顏色;

barwidth為誤差棒的線長;

barcol為誤差棒的顏色;

connect是否不同組的均值用一條線連接;

ccol定義連接線的顏色;

legends定義圖例;

xaxt定義坐標軸的類型;

use.t計算置信區間是否應用t分布;

lwd連接線的線寬。

默認條件下,plotmeans會根據數據的分組計算其組內平均值和95%置信區間,之後以空心原點表示組內平均值,藍色的誤差棒表示置信區間,並顯示組內樣本個數同時用線段連接各組的均值。

library(gplots)
data(state)
plotmeans(state.area ~ state.region)

還可以自定義均值點的形狀和各組間是否使用線段相連。

plotmeans(state.area ~ state.region, connect=list(1:2, 3:4),
ccol="red", pch=7 )

最後還有一個比較複雜的例子。

data(esoph)
par(las=2, # use perpendicular axis labels
mar=c(10.1,4.1,4.1,2.1), # create enough space for long x labels
mgp=c(8,1,0) # move x axis legend down to avoid overlap
)
plotmeans(ncases/ncontrols ~ interaction(agegp , alcgp, sep =" "),
connect=list(1:6,7:12,13:18,19:24),
barwidth=2,
col="dark green",
data=esoph,
xlab="Age Group and Alcohol Consumption",
ylab="# Cases / # Controls",
main=c("Fraction of Cases for by Age and Alcohol Consumption", "Ile-et-Vilaine Esophageal Cancer Study")
)
abline(v=c(6.5, 12.5, 18.5), lty=2)

擴展閱讀
加群、交流和投稿

加群、投稿、轉載、交流、合作等一切事宜!!

相關焦點

  • 還在用趨勢圖的擬合線查看斜率和截距?你out了!
    師姐不知道 不知道什麼是線性插值法   但是   師姐知道什麼是線性趨勢擬合   那線性插值法補齊數據怎麼辦?→百度一下,你就知道
  • R語言可視化——折線圖、平滑曲線及路徑圖
    今天跟大家講關於路徑圖、平滑曲線與折線圖及其美化。
  • python散點圖中如何添加擬合線並顯示擬合方程與R方?
    CDA數據分析師 出品polyfit()函數可以使用最小二乘法將一些點擬合成一條曲線.numpy.polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False)# x:要擬合點的橫坐標# y:要擬合點的縱坐標# deg:自由度.例如:自由度為2,那麼擬合出來的曲線就是二次函數,自由度是3,擬合出來的曲線就是3次函數首先我們先來構造一下需要被擬合的散點
  • Graphpad 繪圖教程|手把手教你繪製折線圖
    折線圖可以顯示隨時間(根據常用比例設置)而變化的連續數據,因此非常適用於顯示在相等時間間隔數據的變化趨勢。今天給大家講解 Graphpad 繪製折線圖,話不多說,直接進入教程。點擊 ok,生成帶有線性回歸擬合趨勢線的草圖。7.是不是感覺趨勢線與數據點間的連線不好辨認,這時可選擇不添加的連接線的點圖,點擊 change 模塊第一個按鈕,按下圖選擇即可。8.
  • 「C」使用 Excel 和 Math.Net 進行曲線擬合和數據預測
    曲線擬合與數據預測曲線擬合(curve fitting)是指選擇適當的曲線類型來擬合觀測數據,以便觀察兩組數據之間的內在聯繫,了解數據之間的變化趨勢。在數據分析時,我們有時需要通過已有數據來預測未來數據。在一些複雜的數據模型中,數據維度很多,數據之間的關係很複雜,我們可能會用到深度學習的算法。
  • 【R畫圖】手把手教你使用ggplot2繪製折線圖
    折線圖同樣是應用非常廣泛的統計圖之一,通過折線圖可以反映某種現象的趨勢。
  • 數據擬合原理及MATLAB實現
    數據插值的特點是數據插值函數會嚴格過所有插值節點,而數據擬合只要求擬合函數合理地反映曲線趨勢,不要求必須過所有數據點。數據插值的用途是內部預測,即待預測點自變量在插值節點的自變量取值範圍之內。數據擬合則可以完成外部預測,比如已知前n天的數據,用來預測第n+1天的數據。
  • R語言可視化(二):折線圖繪製
    02.折線圖繪製清除當前環境中的變量rm(list=ls())設置工作目錄setwd("C:/Users/Dell
  • R語言畫展基礎篇-折線圖
    做折線圖,以觀察兩棵樹的高度變化情況 #做一個基礎版本的折線圖plot(height_1 ~ months, type = "b")lines(height_2 ~ months, type = "b")
  • 【ggplot2】為條形圖和折線圖添加誤差線
    SE為 standard error of the mean 可以參考: http://blog.csdn.net/tanzuozhev/article/details/50830928# summarySE 計算標準差和標準誤差以及95%的置信區間.
  • 數據對比與趨勢分析,折線圖就夠了
    有時我們需要對幾組數據進行對比,不僅要看大小,更要看其趨勢變化,這個時候折線圖是最適合不過了,今天我們就來製作一份折線圖。表格中是三家公司的近五年銷售額數據,我們需要將它們呈現在一張圖裡面。點擊數據區域任意一個單元格,插入折線圖,下面的工作就是美化圖表了。默認的縱軸數據較大,我們將最大值改為600,為了讓圖表更具有層次感,我們將圖表背景設置為灰色,繪圖區填充為白色。我們將系列折線寬度調整為2磅,可以用快捷鍵F4快速設置另外兩條折線。然後在折線圖上面加一下數據標記,以空心圓的形式顯示。
  • 想做好PPT折線圖,看這一篇就夠了!
    如果你要是稍微懂一點折線圖的使用方法,你就能避免上面的一些問題,甚至還能做出下面這種非常有吸引力的折線圖。怎麼樣,這種效果是不是比上面的好了許多,對於工作型PPT來說已經完全能滿足需求了。再比如還可以將折線圖和面積進行結合使用,做出下面這種效果,是不是感覺也不錯。
  • 9個科目,6次成績,54項數據,折線圖一步分析變化趨勢
    折線圖常用來顯示某一事項隨時間變化的趨勢,比如一周內步數的變化、公司各月份的產值變化等;也可用來表示有一種事項受另一種事項發生變化的趨勢,比如體重與身高的變化趨勢、地表溫度受大氣二氧化碳濃度變化的趨勢等等。
  • excel表格怎麼畫趨勢線並顯示趨勢線公式?
    excel表格怎麼畫趨勢線並顯示趨勢線公式?excel中添加的趨勢線是圖表中的一種擴展線,它可以直觀的看出數據的趨勢,根據實際數據預測未來數據,處理幾百萬條數據的時候效果尤為突出,還可以添加公式,下面分享製作的過程先在已經進入大數據時代,數據分析變的越來越重要,excel中添加的趨勢線是圖表中的一種擴展線,它可以直觀的看出數據的趨勢,根據實際數據預測未來數據,處理幾百萬條數據的時候效果尤為突出,還可以添加公式,給人最直觀的結論,
  • 《雅思破7方法論之小作文折線圖篇》
    在說到折線圖的時候大家毋庸置疑會想到一點,就是在講解折線圖的過程當中,你需要說到某一條線上升,或某一條線下降,或者它們之間有波動或者持平,或者上升之後持平等等,所以,老師在這裡給大家一些相關的詞彙。為什麼給大家上升的詞彙會有4到5種呢?因為大家在寫作文的過程當中,需要注意的一個點就是同義詞替換。
  • Excel圖表學習13:在柱狀圖或折線圖中添加水平或垂直線(使用誤差線)
    可以添加一個新系列,將其應用到次要坐標軸,並使次要坐標軸不可見;也可以使用直線誤差線而不是兩點之間的連線。 在《Excel圖表學習12:在柱狀圖或折線圖中添加水平或垂直線(使用新系列)》一文中,詳細介紹了如何使用新系列添加水平或垂直線。
  • 用R語言繪製折線圖
    構造數據源: x <- c(1020,1640,2340,5610,7942) y <- c("水產","水果","蔬菜","豬肉","綜合")        用plot()函數來繪製折線圖
  • 多組數據怎麼做折線圖,這種特殊效果的折線圖,同事只用四步搞定
    Excel圖表相信許多朋友都操作過,圖表能夠更加形象和生動地展示出我們的數據趨勢和差異。但在做圖表的過程中,相信許多朋友都碰到過一個尷尬的問題,那就是對多組數據進行圖表展示的時候,圖表就會堆積到一起,顯得非常難看。
  • Matlab曲線擬合和插值
    1.函數擬合多項式函數擬合:a=polyfit(xdata,ydata,n)其中n表示多項式的最高階數,xdata,ydata為將要擬合的數據,它是用數組的方式輸入.輸出參數a為擬合多項式 y=a1xn+...+anx+a n+1的係數多項式在x處的值y可用下面程序計算.