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()
專門用來設置繪圖參數的函數,par()函數對於圖形參數的改變是永久性的,意思是,當打開R,直至R關閉,par()函數中的參數對你所繪制的每張圖都管用。有時,我們只需要一次調用par(),而不需要它一直工作,此時有兩個方法:其一:在作圖前,將par()函數中所有參數保持為一個實名對象,等到圖形繪制完畢,將這個實名對象釋放出來即可;其二:繪圖完畢后,直接調用dev.off()函數關閉繪圖框,這樣就不會影響下一幅圖了。
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) # 將par對象的參數賦值給op對象 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')