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()

專門用來設置繪圖參數的函數,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')

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM