R 基礎繪圖包之高階繪圖函式
1、plot()
泛型函式,對於不同的資料可以繪製出不同的圖形。
引數:
type: 表示所繪製散點圖的型別。'p'表示繪製散點,'b'表示點連線,線不穿過點,'l'表示繪製線圖,'s'表示繪製階梯,'o'表示繪製點連線,此處線條穿過每一個點,‘n’表示不繪製任何圖形元素。
type = c('p','b','l','s','o','n') par(mfrow=c(2,3)) # 切分畫布 for(i in 1:6){ plot(1:10,type=type[i],main=paste('The plot type is: ', type[i])) }
main: 定義圖形標題;
xlab: 定義橫軸標籤;
ylab: 定義縱軸標籤;
axes=FALSE, 不顯示座標軸
xlim,ylim: 設定座標軸的取值範圍,該引數接受一個向量,即xlim=c(a, b), a和b分別表示座標軸的起始和終止座標。
2、par()
專門用來設定繪圖引數的函式,
adj: 用於調整圖中字元的相對位置,屬於微調。取值adj=c(x, y),表示字元邊界矩形框的左下角相對座標點(x, y)的位置調整。注意此引數的目的是圖形微調,所以x和y的取值一般不會超過1,取值過大的話,容易導致圖形元素超過圖形邊界,從而無法在圖片上顯示。
ask: 邏輯引數取值TRUE/FALSE,在沒有事先將畫布切分成若干小區域,但又同時畫了好幾張圖時,R預設是一張畫布只顯示一張圖,當ask=FALSE時,所有的圖都會在繪圖視窗一閃而過,所以為了清楚展示每一張圖,設ask=TRUE,這時R會彈出一條訊息,中文大意是“第一張圖看好了嗎?要不要切換到下一張,要的話,請按enter鍵”。當按下enter鍵後,第二張圖就會顯示出來。
bg: 顏色引數,用於設定繪圖區域的背景色。
par(bg='green') plot(1:10)
bty: 設定圖形邊框樣式,預設繪製圖形四周邊框,狀似一個‘口’字,可取的值有'o','l','7','c','u', ']',注意,bty引數並不能將x軸和y軸去除,因此將引數設為'7',雖然只繪製上方和右邊的邊框,但是此時x軸和y軸並不會消失。
bty = c('o','l','7','c',']','u') par(mfrow=c(3,2)) # 切分畫布,3行2列 for(i in 1:6){ par(bty=bty[i], col.axis='red', col.lab='blue') plot(1:5,main=paste('The bty is', bty[i], sep=':')) }
cex: 該引數用來設定圖上的元素,比如文字或者符號的縮放倍數,接受一個正數,預設值為1, 當設定為1.5時,則表示圖形上的元素為預設的1.5倍大小。有四個衍生引數:cex.lab; cex.main; cex.sub; cex.axis; 分別表示座標軸標籤,圖形標題,副標題以及座標軸刻度標籤的縮放倍數。
plot(1:5,cex=1:5)
col: 顏色引數,設定圖中元素的顏色。有4個衍生引數:col.lab; col.main; col.sub; col.axis
family: 設定圖中文字的字型引數,預設取值有:'serif', 'sans', 'mono', 'symbol'
font: 設定文字字型樣式,取值為1,2,3,4,分別表示正常,粗體,斜體,粗斜體。
las: 設定座標軸刻度標籤的樣式,取值0,1,2,3,分別表示:總是平行於座標軸;總是水平;總是垂直於座標軸;總是垂直。
par(mfrow=c(2,2)) for(i in 0:3){ par(las=i) plot(1:5,main=paste('The las is', i, sep=':')) }
lty: 設定線條樣式,取值0、1、2、3、4、5、6,分別表示: 不劃線;實線;虛線;點線;點劃線;長劃線;點長劃線;
par(mfrow=c(2,3)) for(i in 1:6){ par(lty=i, lwd=i) plot(1:5, type='l', main=paste('The lty is', i, sep=':'), sub=paste('the lwd is', i, sep=':')) }
lwd: 設定線條寬度,預設取值為1,用法類似cex引數。注意如果在par()函式中使用該引數時,圖形中的所有元素,比如線條、座標軸以及圖形邊框的線條均會改變。如果只需圖形中線條寬度發生改變,則需要將lwd引數放到繪圖函式中。
mar, mai:這兩個引數均用來設定圖形邊界空白寬度,接受一個含有4個元素的數值向量,分別對應圖形下,左,上,右的邊界寬度。前者預設取值是c(5,4,4,2)+0.1,取值單位是線條寬度(line width); 後者取值單位是英寸。
mfrow, mfcol: 畫布切割引數,取值mfrow=c(nrow, mcol), 表示將畫布切分為n行,m列,
mgp: 設定座標軸到畫布邊緣的寬度,取值為mgp=c(x,y,z),預設為mgp=c(3,1,0), 分別表示座標軸標題、座標軸刻度標籤、座標軸線與圖形的距離。
pch: 設定點的形狀。取值為數字1至25,其中實心點(15~20號)可以有背景色填充。
plot(rep(1:5, times=5),rep(1:5, each=5),pch=1:25,cex=1.5,bty='l',xlim=c(1,5.4),xlab='',ylab='',main='25種不同的點型') text(rep(1:5, times=5)+0.15, rep(1:5, each=5), labels=1:25, col='red')
srt: 該引數用來控制圖形中字串的旋轉角度。常規取值為-360~360,
tck, tcl: 這兩個引數都表示座標軸刻度線的高度,前者取值是與圖形寬度和高度的比例值(取值-1~1之間),後者取值是與文字行高的比例值。負值表示座標軸刻度外向,正值表示向內。
par(mfrow=c(1,2)) plot(1:10,tck=0.03,main='tck=0.03') plot(1:10,tck=-0.03,main='tck=-0.03')
usr:該引數用於限定畫布的大小,取值為usr=c(x1,x2,y1,y2), 分別表示圖形x軸的左右極限,y軸的下上極限,即一個矩形區域。
xaxt,yaxt: 設定座標軸的樣式,預設是's',即標準樣式。如果不需要座標軸或者需要自定義座標軸,那麼此處可以設定為‘n’,即表示不繪製座標軸的刻度和刻度標籤,但仍然會繪製一條刻度線。
xlog,ylog:座標軸取值的log轉換引數,預設值為FALSE
fig: 該引數接受一個數值向量,取值為fig=c(x1,x2,y1,y2), 該引數往往配合new=TRUE引數使用,用於在當前圖形上新增一幅新的圖形。
x <- rnorm(1000) qqnorm(x) qqline(x, col='red') # 新增正態擬合線,線條為紅色 op <- par(fig=c(0.02,0.5,0.5,0.98), new=TRUE) hist(x,probability=T,col='light blue',xlab='',ylab='',main='',axes = F) lines(density(x),col='red',lwd=2) # 新增概率密度曲線 box() # 給新圖形加上邊框 par(op) # 釋放參數
xpd:該引數用於繪製繪圖區域的大小,取值為TRUE,FALSE,或者NA。當取值為FALSE時,表示將繪圖區域限定在預設的繪圖區域內;當取值為TRUE時,表示將繪圖區域限定在預設的圖形區域;當取值為NA時,表示將繪圖區域限定為預設的裝置區域。裝置區域可以看成時Rstudio中plots視窗的面積,圖形區域指圖形的‘佔地面積’,繪圖區域是指圖形中點、線、條柱等元素所佔的面積,圖形中的座標軸或者圖形標題等元素就是出現在圖形區域中,而非繪圖區域。xpd引數的作用就是在事先設定繪圖區域的大小,
par(omi=c(0.1,0.1,0.2,0.2),mai=c(2,2,1,2),xpd=NA) #omi引數用於定義圖形區域與裝置區域之間的間距,單位是英寸。mai定義繪圖區域與圖形區域之間的間距,單位英寸。 plot(1:10) text(3,-5,'這是在繪圖區域外新增的文字喲~') text(-0.5,12,'A',cex=3,family='serif') # 在繪圖區域外新增文字
par(omi=rep(0,4),mai=c(2.5,2,1,2),xpd=NA) #omi引數用於定義圖形區域與裝置區域之間的間距,單位是英寸。mai定義繪圖區域與圖形區域之間的間距,單位英寸。 plot(1:10) text(-0.5,12,'A',cex=2,family='serif') # 在繪圖區域外新增文字 par(new=T,mai=c(1,2,2.5,2)) plot(1:10) text(-0.5,12,'B',cex=2,family='serif')