日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《R语言实战》第3章

發布時間:2025/3/20 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《R语言实战》第3章 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
# 3.1 實用圖形 # 綁定數據框mtcars attach(mtcars) # 打開了一個圖形窗口并生成了一幅散點圖,橫軸表示車身重量,縱軸為每加侖汽油行駛的英里數 plot(wt, mpg) # 向圖形添加了一條最優擬合曲線 abline(lm(mpg~wt)) # 添加 了標題 title("Regression of MPG on Weight") # 為數據框解除了綁定 detach(mtcars)getwd() setwd("/Users/moxingjian/Learn/R/test") # 保存到pdf中 pdf("test.pdf")attach(mtcars)plot(wt, mpg)abline(lm(mpg~wt))title("Regression of MPG on Weight")detach(mtcars) dev.off()# 3.2 一個簡單的例子 dose <- c(20, 30, 40, 45, 60) drugA <- c(16, 20, 27, 40, 60) drugB <- c(15, 18, 25, 31, 40) # type="b"表示同時繪制點和線 plot(dose, drugA, type = "b")# 3.3 圖形參數 # (修改圖形參數的)一種方法是通過函數par()來指定這些選項。以這種方式設定的參數值除非被再次修改,否則將在會話結束前一直有效 # 更改當前變量環境 opar <- par(no.readonly = TRUE) # 將默認的線條類型修改為虛線(lty=2)并將默認的點符號改為了實心三角(pch=17) par(lty = 2, pch = 17) plot(dose, drugA, type = "b") # 還原了原始設置 par(opar) # 設置參數 plot(dose, drugB, type = "b", lty = 2, pch = 17)# 3.3.1 符號和線條 # pch:指定繪制點時使用的符號,有0~25種符號,對于符號21~25,還可以指定邊界顏色(col=)和填充色(bg=)。 # cex:指定符號的大小。cex是一個數值,表示繪圖符號相對于默認大小的縮放倍數。默認大小為1,1.5表示放大為默認值的1.5倍,0.5表示縮小為默認值的50%,等等 # lty:指定線條類型 # lwd:指定線條寬度。lwd是以默認值的相對大小來表示的(默認值為1)。例如,lwd=2將生成一條兩倍于默認寬度的線條 # 實戰 plot(dose, drugA, type = "b", pch = 22, col = "red", bg = "black", cex = 2, lty = 3, lwd = 2)# 3.3.2 顏色 # col:默認的繪圖顏色。某些函數(如lines和pie)可以接受一個含有顏色值的向量 并自動循環使用。例如,如果設定col=c("red", "blue")并需要繪制三條線, 則第一條線將為紅色,第二條線為藍色,第三條線又將為紅色 # col.axis:坐標軸刻度文字的顏色 # col.lab:坐標軸標簽(名稱)的顏色 # col.main:標題顏色 # col.sub 副標題顏色 # fg:圖形的前景色 # bg:圖形的背景色n <- 10 # rainbow(10)可以生成10種連續的“彩虹型”顏色 mycolors <- rainbow(n) # 畫出來 pie(rep(1, n), labels = mycolors, col = mycolors) # 多階灰度 色可使用gray()函數生成。這時要通過一個元素值為0和1之間的向量來指定各顏色的灰度。 gray(0:10/10)將生成10階灰度色 mygrays <- gray(0:n/n) pie(rep(1, n), labels = mygrays, col = mygrays)# 3.3.3 文本屬性 # 用于指定文本大小的參數 # cex:表示相對于默認大小縮放倍數的數值。默認大小為1,1.5表示放大為默認值的1.5 15 倍,0.5表示縮小為默認值的50%,等等 # cex.axis:坐標軸刻度文字的縮放倍數。類似于cex # cex.lab:坐標軸標簽(名稱)的縮放倍數。類似于cex # cex.main:標題的縮放倍數。類似于cex # cex.sub:副標題的縮放倍數。類似于cex# 用于指定字體族、字號和字樣的參數 # font:整數。用于指定繪圖使用的字體樣式。1=常規,2=粗體,3=斜體,4=粗斜體,5=符號字體(以Adobe符號編碼表示) # font.axis:坐標軸刻度文字的字體樣式 # font.lab:坐標軸標簽(名稱)的字體樣式 # font.main:標題的字體樣式 # font.sub:副標題的字體樣式 # ps:字體磅值(1磅約為1/72英寸)。文本的最終大小為 ps*cex # family:繪制文本時使用的字體族。標準的取值為serif(襯線)、sans(無襯線)和mono (等寬)# 舉例,在執行以下語句之后創建的所有圖形都將擁有斜體、1.5倍于默認文本大小的坐標軸標簽(名稱),以及粗斜體、2倍于默認文本大小的標題。 par(font.lab = 3, cex.lab = 1.5, font.main = 4, cex.main = 2)quartzFonts("mono") quartzFonts(sans = quartzFont(rep("AppleGothic", 4)),serif = quartzFont(rep("AppleMyungjp", 4))) # 找出你的系統中有哪些字體是可用的 names(pdfFonts()) # 使用字體 pdf(file = "myplot.pdf", family = "serif") # PostScript names(postscriptFonts()) postscript(file = "myplot.ps", family = "Korea1")# 3.3.4 圖形尺寸與邊界尺寸 # 用于控制圖形尺寸和邊界大小的參數 # pin:以英寸表示的圖形尺寸(寬和高) # mai:以數值向量表示的邊界大小,順序為“下、左、上、右”,單位為英寸 # mar:以數值向量表示的邊界大小,順序為“下、左、上、右”,單位為英分*。默認值為c(5, 4, 4, 2) + 0.1# 可生成一幅4英寸寬、3英寸高、上下邊界為1英寸、左邊界為0.5英寸、右邊界為0.2英寸的圖形 par(pin = c(4, 3), mai = c(1, .5, 1, .2))# 代碼清單3-1 使用圖形參數控制圖形外觀 opar <- par(no.readonly = TRUE) # 得到的圖形將為2英寸寬、3英寸高。 par(pin = c(2, 3)) # 除此之 外,線條的寬度將為默認寬度的兩倍,符號將為默認大小的1.5倍。 par(lwd = 2, cex = 1.5) # 坐標軸刻度文本被設置為斜體、縮小為默認大小的75% par(cex.axis = .75, font.axis = 3) # 使用紅色實心圓圈和虛線創建了第一幅圖形 plot(dose, drugA, type = "b", pch = 19, lty = 2, col = "red") # 使用綠 色填充的綠色菱形加藍色邊框和藍色虛線創建了第二幅圖形 plot(dose, drugB, type = "b", pch = 23, lty = 6, col = "blue", bg = "green") # 還原了初始的圖形參數 設置。 par(opar)# 3.4 添加文本、自定義坐標軸和圖例 #在圖形上添加了標題(main)、副標題(sub)、坐標軸標簽(xlab、ylab)并指定了坐標軸范圍(xlim、ylim)。 plot(dose, drugA, type = "b",col = "red", lty = 2, pch = 2, lwd = 2,main = "Clinical Trials for Drug A",sub = "This is hypothetical data",xlab = "Dosage", ylab = "Drug Response",xlim = c(0, 60), ylim = c(0, 70))#3.4.1 標題 # 可以使用title()函數為圖形添加標題和坐標軸標簽。 # 函數title()中亦可指定其他圖形參數(如文本大小、字體、旋轉角度和顏色)。 # 舉例來說,以下代碼將生成紅色的標題和藍色的副標題,以及較默認大小小25%的綠色x軸、y軸標簽: title(main = "My Title", col.main = "red",sub = "My Sub-title", col.sub = "blue",xlab = "My X label", ylab = "My Y label",col.lab = "green", cex.lab = 0.75)# 3.4.2 坐標軸 # 坐標軸選項 # side:一個整數,表示在圖形的哪邊繪制坐標軸(1=下,2=左,3=上,4=右) # at:一個數值型向量,表示需要繪制刻度線的位置 # labels:一個字符型向量,表示置于刻度線旁邊的文字標簽(如果為NULL,則將直接使用at中的值) # pos:坐標軸線繪制位置的坐標(即與另一條坐標軸相交位置的值) # lty:線條類型 # col:線條和刻度線顏色 # las:標簽是否平行于(=0)或垂直于(=2)坐標軸 # tck:刻度線的長度,以相對于繪圖區域大小的分數表示(負值表示在圖形外側,正值表示在圖形內側,0表示禁用刻度,1表示繪制網格線);默認值為?0.01# 創建自定義坐標軸時,你應當禁用高級繪圖函數自動生成的坐標軸。參數axes=FALSE將禁 用全部坐標軸(包括坐標軸框架線,除非你添加了參數frame.plot=TRUE)。參數xaxt="n"和 yaxt="n"將分別禁用X軸或Y軸(會留下框架線,只是去除了刻度)。 # 代碼清單3-2 自定義坐標軸的示例 # 生成數據 x <- c(1:10) y <- x z <- 10/x # 更改當前變量環境 opar <- par(no.readonly = TRUE) # 增加邊界大小 par(mar = c(5, 4, 4, 8) + 0.1) # 繪制x對y的圖形 plot(x, y, type = "b",pch = 21, col = "red",yaxt = "n", lty = 3, ann = FALSE) # 添加x對1/x的直線 lines(x, z, type = "b", pch = 22, col ="blue", lty = 2) # 繪制自己的坐標軸 axis(2, at = x, labels = x, col.axis = "red", las = 2) axis(4, at = z, labels = round(z, digits = 2),col.axis = "blue", las = 2, cex.axis = 0.7, tck = -.01) # 添加標題和文本 mtext("y = 1/x", side = 4, line = 3, cex.lab = 1, las = 2, col = "blue") title("An Example of Creative Axes",xlab = "X Values",ylab = "Y = X") # 還原 par(opar)# 次要刻度線 install.packages("Hmisc") library(Hmisc) # 格式 # 其中nx和ny分別指定了X軸和Y軸每兩條主刻度線之間通過次要刻度線劃分 得到的區間個數。tick.ratio表示次要刻度線相對于主刻度線的大小比例。當前的主刻度線長 度可以使用par("tck")獲取 # minor.tick(nx = n, ny = n, tick.ratio = n) # 下列語句將在X軸的每兩條主刻度線之間添加1條次要刻度線,并在Y軸的每兩條主刻度線之間添加2條次要刻度線 minor.tick(nx = 2, ny = 3, tick.ratio = 0.5)# 3.4.3 參考線 # 使用格式:abline(h = yvalues, v = xvalues) # 在y為1、5、7的位置添加了水平實線 abline(h = c(1, 5, 7)) # 在x為1、3、5、7、9的位置添加了垂直的藍色虛線 abline(v = seq(1, 10, 2), lty = 2, col = "blue")# 3.4.4 圖例 # 使用格式為:lgend(location, title, legend, ...) # 圖例選項 # location:有許多方式可以指定圖例的位置。你可以直接給定圖例左上角的x、y坐標,也可以執行 locator(1),然后通過鼠標單擊給出圖例的位置,還可以使用關鍵字bottom、bottomleft、 left、topleft、top、topright、right、bottomright或center放置圖例。如果你使用 了以上某個關鍵字,那么可以同時使用參數inset=指定圖例向圖形內側移動的大小(以繪圖區域大小的分數表示) # title:圖例標題的字符串(可選) # legend:圖例標簽組成的字符型向量 # ...:其他選項。如果圖例標示的是顏色不同的線條,需要指定col=加上顏色值組成的向量。如果圖例 標示的是符號不同的點,則需指定pch=加上符號的代碼組成的向量。如果圖例標示的是不同的線 條寬度或線條類型,請使用lwd=或lty=加上寬度值或類型值組成的向量。要為圖例創建顏色填 充的盒形(常見于條形圖、箱線圖或餅圖),需要使用參數fill=加上顏色值組成的向量 # 其他常用的圖例選項包括用于指定盒子樣式的bty、指定背景色的bg、指定大小的cex,以 及指定文本顏色的text.col。指定horiz=TRUE將會水平放置圖例,而不是垂直放置。# 代碼清單3-3 依劑量對比藥物A和藥物B的響應情況 opar <- par(no.readonly = TRUE) # 增加線條、文本、符號、標簽的寬度或大小 par(lwd = 2, cex = 1.5, font.lab = 2) # 繪制圖形 plot(dose, drugA, type = "b",pch = 15, lty = 1, col ="red", ylim = c(0, 60),main = "Drug A vs Drug B",xlab = "Drug Dosage", ylab = "Drug Response") lines(dose, drugB, type = "b",pch = 17, lty = 2, col = "blue") abline(h = c(30), lwd = 1.5, lty = 2, col ="gray") # 添加次要刻度線 library(Hmisc) minor.tick(nx = 3, ny = 3, tick.ratio = 0.5) # 添加圖例 legend("topleft", inset = .05, title = "Drug Type", c("A", "B"),lty = c(1, 2), pch = c(15, 17), col = c("red", "blue")) # 還原 par(opar)# 3.4.5 文本標注 # 可以通過函數text()和mtext()將文本添加到圖形上。text()可向繪圖區域內部添加文本,而mtext()則向圖形的四個邊界之一添加文本。 # 使用格式分別為: # text(location, "text to place", pos, ...) # mtext("text to place", side, line = n, ...) # 函數text()和mtext()的選項 # location:文本的位置參數。可為一對x,y坐標,也可通過指定location為locator(1)使用鼠標交互式地確定擺放位置 # pos:文本相對于位置參數的方位。1=下,2=左,3=上,4=右。如果指定了pos,就可以同時指定參數offset=作為偏移量,以相對于單個字符寬度的比例表示 # side:指定用來放置文本的邊。1=下,2=左,3=上,4=右。你可以指定參數line=來內移或外移文本,隨著值的增加,文本將外移。也可使用adj=0將文本向左下對齊,或使用adj=1右上對齊attach(mtcars) plot(wt, mpg,main = "Mileage vs Car Weight",xlab = "Weight", ylab = "Mileage",pch = 18, col = "blue") # 針對數據框mtcars提供的32種車型的車重和每加侖汽油行駛英里數繪制了散點圖。 函數text()被用來在各個數據點右側添加車輛型號。各點的標簽大小被縮小了40%,顏色為紅色。 text(wt, mpg,row.names(mtcars),cex = 0.6, pos = 4, col = "red") detach(mtcars)# 例子二,以下是一段展示不同字體族的代碼: opar <- par(no.readonly = TRUE) par(cex = 1.5) plot(1:7, 1:7, type = "n") text(3, 3, "Example of default text") text(4, 4, family = "mono", "Example of mono-spaced text") text(5, 5, family = "serif", "Example of serif text") par(opar)# 數學標注 # 函數plotmath()可以為圖形主體或邊界上的標題、坐標軸名稱或文本標注添加數學符號。 help("plotmath") # 示例 x <- seq(-4, 4, len = 101) y <- cbind(sin(x), cos(x)) matplot(x, y, type = "l", xaxt = "n",main = expression(paste(plain(sin) * phi, " and ",plain(cos) * phi)),ylab = expression("sin" * phi, "cos" * phi), # only 1st is takenxlab = expression(paste("Phase Angle ", phi)),col.main = "blue") axis(1, at = c(-pi, -pi/2, 0, pi/2, pi),labels = expression(-pi, -pi/2, 0, pi/2, pi))# 3.5 圖形的組件 # 在R中使用函數par()或layout()可以容易地組合多幅圖形為一幅總括圖形 # 可以在par()函數中使用圖形參數mfrow=c(nrows, ncols)來創建按行填充的、行數為 nrows、列數為ncols的圖形矩陣。另外,可以使用nfcol=c(nrows, ncols)按列填充矩陣。 # 以下代碼創建了四幅圖形并將其排布在兩行兩列中: attach(mtcars) opar <- par(no.readonly = TRUE) par(mfrow = c(2, 2)) plot(wt, mpg, main = "Scatterplot of wt vs mpg") plot(wt, disp, main = "Scatterplot of wt vs disp") hist(wt, main = "Histogram of wt") boxplot(wt, main = "Boxplot of wt") par(opar) detach(mtcars)# 第二個示例,3行1列排布3幅圖形 attach(mtcars) opar <- par(no.readonly = TRUE) par(mfrow = c(3, 1)) hist(wt) hist(mpg) hist(disp) par(opar) detach(mtcars)# 函數layout()的調用形式為layout(mat),其中的mat是一個矩陣,它指定了所要組合的多個圖形的所在位置。 # 在以下代碼中,一幅圖被置于第1行,另兩幅圖則被置于第2行: attach(mtcars) layout(matrix(c(1, 1, 2, 3), 2, 2, byrow = TRUE)) hist(wt) hist(mpg) hist(disp) detach(mtcars) # 為了更精確地控制每幅圖形的大小,可以有選擇地在layout()函數中使用widths=和heights=兩個參數。其形式為: # widths = 各列寬度值組成的一個向量 # heights = 各行高度值組成的一個向量 # 相對寬度可以直接通過數值指定,絕對寬度(以厘米為單位)可以通過函數lcm()來指定。 # 在以下代碼中,我們再次將一幅圖形置于第1行,兩幅圖形置于第2行。但第1行中圖形的 10 高度是第2行中圖形高度的三分之一。除此之外,右下角圖形的寬度是左下角圖形寬度的四分之一 attach(mtcars) layout(matrix(c(1, 1, 2, 3), 2, 2, byrow = TRUE),widths = c(3, 1), heights = c(1, 2)) hist(wt) hist(mpg) hist(disp) detach(mtcars)# 圖形布局的精細控制 # 可能有很多時候,你想通過排布或疊加若干圖形來創建單幅的、有意義的圖形,這需要有對 圖形布局的精細控制能力。你可以使用圖形參數fig=完成這個任務。 # 代碼清單3-4通過在散點圖 上添加兩幅箱線圖,創建了單幅的增強型圖形 # 要理解這幅圖的繪制原理,請試想完整的繪圖區域:左下角坐標為(0,0),而右上角坐標為 (1,1)。圖3-19是一幅示意圖。參數fig=的取值是一個形如c(x1, x2, y1, y2)的數值向量。 # 第一個fig=將散點圖設定為占據橫向范圍0~0.8,縱向范圍0~0.8。上方的箱線圖橫向占據0~0.8,縱向0.55~1。右側的箱線圖橫向占據0.65~1,縱向0~0.8。fig=默認會新建一幅圖形,所 以在添加一幅圖到一幅現有圖形上時,請設定參數new=TRUE。 # 我將參數選擇為0.55而不是0.8,這樣上方的圖形就不會和散點圖拉得太遠。類似地,我選擇 了參數0.65以拉近右側箱線圖和散點圖的距離。你需要不斷嘗試找到合適的位置參數。 opar <- par(no.readonly = TRUE) # 設置散點圖位置 par(fig = c(0, 0.8, 0, 0.8)) plot(mtcars$wt, mtcars$mpg,xlab = "Miles Per Gallon",ylab = "Car Weight") # 在左上方添加箱圖 par(fig = c(0, 0.8, 0.55, 1), new = TRUE) boxplot(mtcars$wt, horizontal = TRUE, axes = FALSE) # 在右上方添加箱圖 par(fig = c(0.65, 1, 0, 0.8), new = TRUE) boxplot(mtcars$mpg, axes = FALSE) mtext("Enhanced Scatterplot", side = 3, outer = TRUE, line = -3) par(opar)

總結

以上是生活随笔為你收集整理的《R语言实战》第3章的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。