R語言筆記--par()函數詳解


R有着非常強大的繪圖功能,我們可以利用簡單的幾行代碼繪製出各種圖形來,但是有時候默認的圖形設置沒法滿足我們的需要,甚至會碰到各種各樣的小問題:如座標軸或者標題出界了,或者圖例說明的大小或者位置遮擋住了圖形,甚至有時候默認的顏色也不能滿足我們的需求。如何進行調整呢?這就用到了強大的函數par()。我們可以通過設定函數par()的各個參數來調整我們的圖形,這篇博文就是對函數par()的各個參數進行一下總結。


    函數par()的使用格式如下:

    par(..., no.readonly= FALSE)

    其中...表示所有類似於tag=value形式的參數。下面會具體的對這些參數進行描述。當參數no.readonly=TRUE時,函數par()就只允許有這一個參數了,並且會返回當前繪圖設備中各個參數的參數值。


每一個圖形設備都有自己的繪圖參數,如果當前還沒有打開繪圖設備,那麼函數par()在進行參數設置之前會自動的打開一個新繪圖設備。

如前面所說,直接在R編輯器中輸入命令par()或者par(no.readonly=TRUE)都可以獲取當前的各個繪圖參數。

 

函數par()中的參數可以分爲三大類:
1、只能讀取,不能進行設置。包括參數cincracsicxydin

2、只能通過函數par()進行設置。包括參數:

  1. "ask",

  2. "fig","fin",

  3. "lheight",

  4. "mai","mar","mex","mfcol","mfrow","mfg",

  5. "new",

  6. "oma","omd","omi",

  7. "pin","plt","ps","pty",

  8. "usr",

  9. "xlog","ylog"

3、剩下的參數除了函數par()外,還可以通過各種高級繪圖函數進行設置,如函數plotpointslinesablinetitletextaxisimageboxcontourrectarrows等。


      通過par( )函數對圖形參數進行設置後,當需要還原爲系統默認值時又該如何做呢?有兩種方式可實現:

一是在調用par()函數設置圖形參數之前先執行op <-par(no.readonly=TURE)保存系統當前的環境,待需要還原時執行par(opar)即可;

二就是直接關閉圖形對話框,下次重新打開時即爲默認設置。


接下來就對各個參數的含義進行一下大概的說明,中間會用一些簡單的代碼作爲示例。

  • adj。該參數值用於設定在textmtexttitle中字符串的對齊方向。0表示左對齊,0.5(默認值)表示居中,而1表示右對齊(說明一下,區間[0,1]內的任何值都可以作爲參數adj的有效值,並且在大部分的圖形設備中,介於區間外的值也是有效的)。注意一下,函數text中的參數adj的值可以以類似於形式adj=c(x,y)調整方向。但是在text中該參數的值影響的是對點的標記,對函數mtexttitle來說,參數adj的值影響的是整個圖像或設備區域。

> par(mfrow=c(1,2))
> plot(1:4)
> title("plot(1:4)",adj=0)
> plot(1:4)
> title("plot(1:4)",adj=1)

  • ann。如果ann=FALSE,那麼高水平繪圖函數會調用函數plot.default使對座標軸名稱、整體圖像名稱不做任何註解。默認值爲TRUE

> plot(1:4,ann=FALSE,main='plot(1:4,ann=FALSE)')#儘管指定了參數main的值,但是圖像中仍然沒有顯示
> plot(1:4,ann=TRUE,main='plot(1:4,ann=FALSE)')

  • ask,邏輯值。若爲TRUE(且當前的R會話是可交互狀態),則在繪製新圖像之前會要求用戶輸入確認信息。同樣的,會對擴展包gridlattice的輸出有影響,甚至可能會應用到沒有屏幕輸出的設備上(但可能會沒有效果)。

  • bg。用於設定繪圖區域的背景顏色。當通過函數par()調用時,會同時設定參數new=FALSE。對很多設備來說,該參數的初始值就是該設備的背景顏色值,其他情況下一般爲"white"。需要注意一點的是,一些圖形函數例如plot.defaultpoints等也有名爲bg的參數,但是代表的含義是不同的。

  • bty。該參數值爲字符串型,用於限定圖形的邊框類型。如果bty的值爲"o"(默認值)、"l""7""c""u"或者"]"中的任意一個,對應的邊框類型就和該字母的形狀相似。如果bty的值爲"n",表示無邊框。

  • cex。用於表示對默認的繪圖文本和符號放大多少倍。需要注意一些繪圖函數如plot.default等也有一個相同名字的參數,但是此時表示在函數par()的參數cex的基礎上再放大多少倍,此外還有函數points等接受一個數值向量爲參數。

  • cex.axis。表示在當前的cex設定情況下,對座標軸刻度值字體的放大倍數。

  • cex.lab。表示在當前的cex設定情況下,對座標軸名稱字體的放大倍數。

  • cex.main。表示在當前的cex設定情況下,對主標題字體的放大倍數。

  • cex.sub。表示在當前的cex設定情況下,對子標題字體的放大倍數。

  • cin。這是一個只讀參數,不能進行修改。以形式(width,height)返回字體大小,單位爲英寸。這和參數cra的作用一樣,只是測量單位不同。

  • col。用於設定默認的繪圖顏色。

  • col.axis。座標軸刻度值的顏色,默認爲"black"。如代碼:

>par(cex.axis=3,col.axis="red")

>plot(1:4)

  • col.lab。座標軸名稱的顏色,默認爲"black"

  • col.main。主標題的顏色,默認爲"black"

  • col.sub。子標題的顏色,默認爲"black"

  • cra。參見參數cin的說明。

  • crt。該參數的值爲一個表示度數的數值,用於表示單個字符的旋轉度數,最好爲90的倍數。和參數srt的不同之處在於後者是對整個字符串進行旋轉。

  • csi。只讀參數,返回默認的字符高度,以英寸爲單位。

  • cxy。只讀參數,以形式(width,height)返回默認的字符寬度、高度,其中par("cxy")=par("cin")/par("pin")

  • din。只讀參數,表示繪圖設備的尺寸規格,以形式(width,height)返回,單位爲英寸。

  • family。圖形中字符的字體類型。最大的長度爲200 bytes。默認值爲"",表示採用繪圖設備的默認字體。

  • fg。圖形中顯著位置的顏色(如座標軸、刻度線,邊框等),一般默認爲"black"

  • fig。一個數值向量,形式爲c(x1, x2, y1, y2),用於設定當前圖形在繪圖設備中所佔區域,注意需要滿足x1<x2,y1<y2。如果修改參數fig,會自動打開一個新的繪圖設備,而若希望在原來的繪圖設備中添加新的圖形,需要和參數new=TRUE一起使用。如代碼:

>par(fig=c(0,0.5,0,0.5))
> plot(1:3)

> par(fig=c(0.5,1,0.5,1))
> plot(1:3)

>par(fig=c(0,0.5,0,0.5),new=TRUE)

>plot(1:3)


  • fin。當前繪圖區域的尺寸規格,形式爲(width,height),單位爲英寸。如果修改了這個參數的值,默認爲啓動一個新的繪圖設備。

  • font。用於設定採用哪種字型,爲一個整數。1代表純文本(默認值),2表示黑體,3表示斜體,4表示黑色斜體。在Adobe字符編碼下,5也可以。

font.axis。座標軸刻度值的字型。

font.lab。座標軸名稱的字型。

font.main。主標題的字型。

font.sub。子標題的字型。

  • lab。以形式c(x,y,len)表示的數值型向量,用於對座標軸的名稱進行設定。值xy用於設定xy軸上的刻度線的個數,而len設定了刻度線的長度(目前R中這個值是沒有效應的)。

  • las。只能是0,1,2,3中的某一個值,用於表示刻度值的方向。0表示總是平行於座標軸;1表示總是水平方向;2表示總是垂直於座標軸;3表示總是垂直方向。

  • lend。線段的端點樣式,參數值可以爲一個整數或者一個字符串。參數值爲0或者"round"時,表示端點樣式爲圓角(默認值);爲1或者"butt"時,表示端點直接截斷;爲2或者"square"表示延伸末端。如代碼:

> plot(1:8,type="n",ylim=c(1,6))
>
x0<-c(1,2,3,5,6)
>
y0<-rep(1,5)
>
x1<-x0
>
y1<-rep(6,5)
>
segments(x0,y0,x1,y1)
>
x0<-rep(0,4)
>
y0<-seq(1.3,4.3,1)
>
x1<-c(1,6,3,1)
>
y1<-y0
#
默認情形
> segments(x0,y0,x1,y0,lwd=10,col="red")
#
修改參數lend=1
>
y0<-seq(1.6,4.6,1)
>
y1<-y0
>
segments(x0,y0,x1,y0,lwd=10,col="green",lend=1)
#
修改參數lend=2
>
y0<-seq(1.9,4.9,1)
>
y1<-y0
>
x0<-x1
>
x1<-c(2,8,5,3)
>segments(x0,y0,x1,y0,lwd=10,col="blue",lend=2)

  • lty。直線類型。參數的值可以爲整數(0爲空,1爲實線(默認值),2爲虛線,3爲點線,還可以爲456等),也可以爲字符串(和整數是一一對應的,如"blank""solid""dashed""dotted""dotdash""longdash"或者"twodash")。

  • lwd。線條寬度。必須爲一個整數,默認值爲1。具體的實現根據設備而定,有一些繪圖設備不支持線條寬度小於1

  • mfcolmrow。用於設定圖像設備的佈局(簡單的說就是將當前的繪圖設備分隔成了nr*nc個子設備),參數形式爲c(nr, nc)。子圖的繪圖順序是按列還是按行就分別根據是參數指定的是mfcol還是mfrow。想要實現相同的功能還可以利用函數layout或者split.screen

  • mgp。設定標題、座標軸名稱、座標軸距圖形邊框的距離。默認值爲c(3,1,0),其中第一個值影響的是標題。

  • new。邏輯值,默認值爲FALSE。如果設定爲TRUE,那麼下一個高級繪圖命令並不會清空當前繪圖設備。

  • oma。參數形式爲c(bottom, left, top, right),用於設定外邊界。

  • omi。和參數oma的作用一樣,只是這次參數的單位爲英寸。

  • pch。表示點的形狀,它的值可以爲數值型(介於025之間的數值),也可以爲字符型。1代表圓圈,2代表三角形,3代表“+”號。當pch的值爲字符型時,那麼點就通過該字符來表示。

  • pin。當前的維度,形式爲c(width,height),單位爲英寸。

  • plt。形式爲c(x1, x2, y1, y2),設定當前的繪圖區域。

  • pty。一個字符型參數,表示當前繪圖區域的形狀,"s"表示生成一個正方形區域,而"m"表示生成最大的繪圖區域。

  • srt。字符串旋轉度數,只支持函數text

  • tck。刻度線的長度,爲一個小於等於的小數,表示繪圖區域的高度或寬度的一部分(取高度或寬度中較小的值)。如果tck=1,則表示繪製網格線。默認值爲NA(相當於tcl=-0.5)。

  • tcl。同樣可用於設定刻度線的長度,但是和tck的單位不同。它的默認值爲-0.5

  • usr。一個形式爲c(x1, x2, y1, y2)的向量,表示當前繪圖區域的座標值範圍:c(xleft, xright, ybottom, ytop)。如果採用的對數刻度(如par("xlog")=TRUE),那麼x座標軸的表示範圍爲10^par("usr")[1:2],同樣也可以得到y座標軸的表示範圍。

  • xaxp。一個形式爲c(x1, x2, n)的向量,表示當par("xlog")=false時,x座標軸的刻度線的區間及區間中的刻度線個數。若par("xlog")=TRUE,情形就稍微複雜了:若取值範圍較小,那麼n是一個負數,且刻度線的分佈和正常情形(沒有對數轉換)下相似;若n取值爲123中的一個,c(x1,x2)=10^par("usr")[1:2](並且此時par("usr")是指par("xlog")=TRUE情況下返回的值)。具體解釋如下:

n=1,在座標值爲10^jj爲整數)處繪製刻度線。

n=2,在座標值爲k*(10^j)處繪製刻度線,其中k1或者5

n=3,在座標值爲k*(10^j)處繪製刻度線,其中k12或者5

  • yaxp。同xaxp類似,表示y座標軸的刻度線的區間及區間中的刻度線個數。

  • xaxs。座標軸x的間隔設定方式。取值範圍爲:"r","i","e","s","d"。一般來說,計算方式是由xlim的數值範圍確定的(如果xlim指定了的話)。"r"(regular)首先會對數值範圍向兩端各延伸4%,然後在延伸後的數值區間中設置座標值;"i"(internal)直接在原始的數據範圍中設置座標值;"s"(standard)"e"(extended)、;"d"(direct)目前還不支持。

  • yaxs。類似於xaxs,對座標軸y的間隔設定方式。

  • xaxt。用於設定x座標軸的刻度值類型,爲一個字符。"n"表示不繪製刻度值及刻度線;"s"表示繪製,默認值。

  • yaxt。類似於xaxt

  • xlog。一個邏輯值。如果爲TRUE,表示對x軸爲對數座標軸,默認值爲FALSE

  • ylog。類似於xlog


參考自 http://blog.sina.com.cn/s/blog_6caea8bf0100yk4h.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章