《R語言實戰(zhàn)》學(xué)習(xí)筆記(三)

圖像初階

同時打開多幅圖像

方法一:在創(chuàng)建一幅新圖形之前打開一個新的圖形窗口,每一幅新圖形將出現(xiàn)在最近一次打開的窗口中,之后會打開多個圖形用戶界面

dev.new( )
statements to create graph 1    # 創(chuàng)建圖形1
dev.new( )
statements to create a graph 2  # 創(chuàng)建圖形2

注意:也可用x11()打開新的圖形窗口

方法二:通過圖形用戶界面來查看多個圖形,使用菜單中的“上一個”(Previous)和“下一個”(Next),來逐個查看已經(jīng)繪制的圖形

方法三:使用函數(shù)dev.new( )、dev.next( )、dev.prev( )、 dev.set( ) 和 dev.off( )同時打開多個圖形窗口,并選擇將哪個輸 出發(fā)送到哪個窗口中

dev.set(dev.prev())       # 設(shè)置前一個窗口為當(dāng)前繪圖窗口
dev.set(dev.next())       # 設(shè)置下一個窗口為當(dāng)前繪圖窗口
dev.off()                 # 關(guān)閉該圖形設(shè)備

plot函數(shù)中type變量的種類

par(mfrow = c(2,3))
plot(c(1:10),type = "p",main = "'p' 點")
plot(c(1:10),type = "l",main = "'l' 線")
plot(c(1:10),type = "b",main = "'b' 斷點為點,線連接,點線不相交")
plot(c(1:10),type = "c",main = "'c' 僅線,不連續(xù)")
plot(c(1:10),type = "o",main = "'o' 點、線且相交")
plot(c(1:10),type = "n",main = "'n' 空圖")

圖形參數(shù)

可以通過修改圖形參數(shù),來自定義一幅圖形的特征 —— 字體、顏色、坐標(biāo)軸、標(biāo)簽

方法1:通過函數(shù),par( optionname=value, optionname=name, ... )

par函數(shù)共有72個參數(shù),分為三類:

第一類,只能讀取,不能進行設(shè)置,例如參數(shù)cin、cra、csi、cxy、din

第二類,只能通過函數(shù)par()進行設(shè)置,例如參數(shù)ask、fig、fin、lheight、mai、mar、mex、mfcol、mfrow、mfg、new、oma、omd、omi、pin、plt、ps、pty、usr、xlog、ylog

第三類,其它參數(shù)既可以使用函數(shù)par()進行設(shè)置,還可以通過各種 高級繪圖函數(shù)進行設(shè)置,例如plot,points,lines,abline等

下面介紹參數(shù)時使用數(shù)字加點的形式表示參數(shù)是第幾類參數(shù)

方法2:直接在繪圖函數(shù)中設(shè)置optionname的鍵值,這種情況下,指定的選項僅對這幅圖形本身有效

符號和線條

3.pch          符號形狀
3.cex.axis     坐標(biāo)軸字號
3.cex.lab      標(biāo)簽字號
3.cex.main     題目字號
3.cex.sun      副題目字號
3.lty          線的類型
3.lwd          線條寬度。必須為一個整數(shù),默認(rèn)值為1
參數(shù)pch可指定的繪圖符號

參數(shù)lty可指定的線條類型

顏色

3.col              默認(rèn)繪圖顏色
3.col.axis         坐標(biāo)軸顏色
3.col.lab          標(biāo)簽顏色
3.col.main         題目顏色
3.col.sub          副標(biāo)題顏色
3.fg               前景色
3.bg               背景色

在R中,可以通過顏色下標(biāo)、顏色名稱、十六進制的顏色值、RGB值或HSV值來指定顏色

例如,白色可以表示為:col=1, col="white“, col="#FFFFFF", col=rgb(1,1,1), col=hsv(0,0,1)

heat.colors( )、terrain.colors( )、topo.colors( )、 cm.colors( )函數(shù)是四種連續(xù)性顏色向量函數(shù)

多階灰度色可使用基礎(chǔ)安裝所自帶的gray()函數(shù)生成 (元素值為0到1),例如:gray(0:10/10)將生成10階灰度色

RColorBrewer包創(chuàng)建顏色向量

包中顏色板被劃分為序列型(sequential)、離散型(diverging)、分類型(qualitative)三種

brewer.pal(n, name),可以創(chuàng)建一個顏色值的向量,n表示顏色向量的維度(即多少種顏色),name表示顏色板的類型(sequential、diverging、qualitative),可以按順序提取出用戶想要的顏色

display.brewer.pal()顯示某個指定的顏色板

display.brewer.all()顯示某個類型全部的顏色板

文本屬性

字號相關(guān)的參數(shù)

3.cex            相對默認(rèn)大小縮放倍數(shù)的數(shù)值
3.cex.axis       坐標(biāo)軸字號
3.cex.lab        標(biāo)簽字號
3.cex.main       題目字號
3.cex.sun        副題目字號

字體相關(guān)的參數(shù)

3.font          整數(shù),用于指定繪圖使用的字體樣式,1=常規(guī),2=粗體,3=斜體,4=粗斜體,5=符號字體
3.font.axis     坐標(biāo)軸字體
3.font.lab      標(biāo)簽字體
3.font.main     題目字體
3.font.sub      副題目字體
2.ps            字體磅值
3.family        全局字體,特指字體的類型,標(biāo)準(zhǔn)取值為serif(襯線)、sans(無襯線)和mono(等寬)

在windows平臺可以通過函數(shù)windowsFont()來創(chuàng)建字體族:

windowsFonts(
A=windowsFont("Arial Black"),
B=windowsFont("Bookman Old Style"),  
C=windowsFont("Comic Sans MS")
)

之后,即可使用A、B和C作為family的取值,例如 par(family="A"),將指定ArialBlack作為繪圖字體

圖形尺寸與邊界尺寸

2.pin           圖的長寬,形式為c(width,height),單位為英寸
2.mai           設(shè)置圖形空白邊界,mai =c(bottom, left, top, right),單位為英寸。缺省為mai = c(1.02,0.82,0.82,0.42)
2.mar           設(shè)置圖形空白邊界,mar =c(bottom, left, top, right),單位為英分。缺省為mar = c(5,4,4,2)
2.mfcol, mfrow  設(shè)置小圖數(shù)量與位置,數(shù)值型向量c(nrow, ncol)。圖按列排(mfcol)或按行排(mfrow)

添加文本、自定義坐標(biāo)軸和圖例

標(biāo)題

title( ) 為圖形添加標(biāo)題和坐標(biāo)軸標(biāo)簽

title (main="main title", sub="subtitle", xlab="x-axis  label", ylab="y-axis label")

坐標(biāo)軸

axis(side, at=, labels=, pos=, lty=, col=, las=, tck=, ...) 來創(chuàng)建自定義的坐標(biāo)軸

side          一個整數(shù),表示在圖形的哪邊繪制坐標(biāo)軸(1=下,2=左,3=上,4=右)
at            一個數(shù)值型向量,表示需要繪制刻度線的位置
labels        一個字符型向量,表示置于刻度線旁邊的文字標(biāo)簽(若為null,則直接只用at中的值)
pos           坐標(biāo)軸線繪制位置的坐標(biāo)(即與另一條坐標(biāo)軸相交位置的值)
lty           線條類型
col           線條和刻度線顏色
las           線條是否平行于(=0)或垂直于(=2)坐標(biāo)軸
tck           刻度線的長度,以相對于繪圖區(qū)域大小的分?jǐn)?shù)表示(負值表示在圖形外側(cè),正值表示在內(nèi)側(cè),0表示禁用刻度,1表示繪制網(wǎng)格線)默認(rèn)值為-0.01

參考線

abline (h=yvalues, v=xvalues) 為圖形添加參考線

lines()和abline()的區(qū)別:

lines(x, y=NULL, type="l"):繪制關(guān)于x、y向量的直線, 相當(dāng)于plot(x, y=NULL, type="l"),但是lines()函數(shù)不能單 獨繪制圖形

abline(x, y):表示畫一條y=a+bx的直線

abline(h=y):繪制y值固定的一條水平直線

abline(v=x):繪制x值固定的一條垂直直線

abline(lm.obj):繪制線性模型lm.obj的擬合直線

圖例

legend (location, title, legend, ...) 為圖形添加圖例

location          制定圖例的位置??梢灾苯咏o出x,y的坐標(biāo),也可以通過locator(1)用鼠標(biāo)點擊給出圖例的位置,也可使用關(guān)鍵字bottom、bottomleft、left、topleft、top、topright、right、bottomright或center放置圖例
title             圖例標(biāo)題的字符串
legend            圖例標(biāo)簽組成的字符型向量
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")
legend("topleft", inset=.05, title="Drug Type", c("A","B"),
       lty=c(1, 2), pch=c(15, 17), col=c("red", "blue"))
par(opar)

文本標(biāo)注

text (location, text, pos, ...) 向繪圖區(qū)域內(nèi)部添加文本

mtext( text, side, line, outer = FALSE, at, adj, cex, col, font, ... ) 向圖形的四個邊界添加文本

pos        文本相對于位置參數(shù)的方位,1=下面,2=左邊,3=上邊,4=右邊
text       繪制的文本
side       哪個頁邊留出空白(1=下面,2=左邊,3=上邊,4=右邊)
line       相對于坐標(biāo)軸,文本出現(xiàn)的位置(坐標(biāo)軸向外從0開始計數(shù))
outer      是否允許使用外邊緣
at         給定坐標(biāo)軸上每個字符串的位置
adj        調(diào)整每個字符串的閱讀方向(0=左對齊或下對齊,1=右對齊 或上對齊)
drug<- data.frame(dose,drugA)
row.names(drug)<-c("d1","d2","d3","d4","d5")
plot(dose, drugA, main="dose vs. drugA", xlab="dose",  ylab="drugA", pch=18, col="blue")
mtext("x-axis",3,cex=2)
mtext("y-axis",4,cex=2 )
text(dose, drugA, row.names(drug),cex=2, pos=4, col="red")

圖形的組合

par()函數(shù)

在par( )函數(shù)中使用圖形參數(shù) mfrow=c(nrows, ncols)來創(chuàng) 建按行填充的、行數(shù)為nrows、列數(shù)為ncols的圖形矩陣,還可以使用mfcol=c(nrows, ncols)按列填充矩陣

dose <- c(20,30,40,45,60)
drugA <- c(16,20,27,40,60)
drugB <-c(15,18,25,31,40)
par(mfrow=c(2,2))
plot(dose, drugA, main="Scatterplot of dose vs.drugA")
plot(dose, drugB, main="Scatterplot of dose vs. drugB")
hist(dose, main="Histogram of dose")
boxplot(dose, main="Boxplot of dose")

注意:繪圖函數(shù)hist( )包含了一個默認(rèn)的標(biāo)題(使用main=“”可 以禁用它,或者使用ann=FALSE來禁用所有標(biāo)題和標(biāo)簽)

layout()函數(shù)

函數(shù)layout( )的調(diào)用形式為layout(mat,widths,heights,...)

其中,mat是一個矩陣,它指定了所要組合的多個圖形的所在位置
widths = 各列寬度值組成的一個向量
heights = 各行高度值組成的一個向量

相對寬度可以直接通過數(shù)值指定,絕對寬度(以厘米為單位)可以通過函數(shù)lcm( )來指定

dose <- c(20,30,40,45,60)
drugA <- c(16,20,27,40,60)
drugB <-c(15,18,25,31,40)
#各子圖寬度按照3:1分配,各子圖高度按照1:2分配
layout(matrix(c(1, 1, 2, 3), 2, 2, byrow = TRUE),widths=c(3, 1), heights=c(1, 2))
hist(dose)
hist(drugA)
hist(drugB)

圖形布局的精細控制

fig=c(x1, x2, y1, y2)實現(xiàn)對圖形布局的精細控制

其中,x1、x2表示繪圖區(qū)域在x軸方向的起止范圍
y1、y2表示繪圖區(qū)域在y軸方向的起止范圍,如果設(shè)置了該參數(shù),需要同時配合new=TRUE以在指定區(qū)域繪制 一幅新圖形

完整的繪圖區(qū)域:左下角坐標(biāo)為(0, 0),而右上角坐標(biāo)為(1, 1)

dose <- c(20,30,40,45,60)
drugA <- c(16,20,27,40,60)
drugB <-c(15,18,25,31,40)
par(fig=c(0, 0.8, 0, 0.8))
plot(dose, drugA, xlab="dose", ylab="drugA")
par(fig=c(0, 0.8, 0.55, 1), new=TRUE)
boxplot(dose, horizontal=TRUE, axes=FALSE)
par(fig=c(0.65, 1, 0, 0.8), new=TRUE)
boxplot(drugA, axes=FALSE)
mtext("Enhanced Scatterplot", side=3, outer=TRUE, line=-3)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容