R中設置圖形參數--函數par()詳解

分類:IT技術 時間:2016-10-12
 

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

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

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

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

    每一個圖形設備都有自己的繪圖參數,如果當前還沒有打開繪圖設備,那麽函數par()在進行參數設置之前會自動的打開一個新繪圖設備。
   如前面所說,直接在R編輯器中輸入命令par()或者par(no.readonly=TRUE)都可以獲取當前的各個繪圖參數。
    函數par()中的參數可以分為三大類:

  1. 只能讀取,不能進行設置。包括參數cin,
    cra,
    csi,
    cxy
    din。
  2. 只能通過函數par()進行設置。包括參數:
    • "ask"
      ,
    • "fig"
      ,
      "fin"
      ,
    • "lheight"
      ,
    • "mai"
      ,
      "mar"
      ,
      "mex"
      ,
      "mfcol"
      ,
      "mfrow"
      ,
      "mfg"
      ,
    • "new"
      ,
    • "oma"
      ,
      "omd"
      ,
      "omi"
      ,
    • "pin"
      ,
      "plt"
      ,
      "ps"
      ,
      "pty"
      ,
    • "usr"
      ,
    • "xlog"
      ,
      "ylog"
  3. 剩下的參數除了函數par()外,還可以通過各種高級繪圖函數進行設置,如函數plot,points,lines,abline,title,text,axis,image,box,contour,rect,arrows等。

    當一個參數的值被設定時,默認的會返回設定之前這個參數的值,我們可以通常一些變量把這些值保存下來。執行完操作之後,可以利用這些歷史值進行恢復設定(但是不建議這麽做,因為可能會引起一些參數值沖突)。如:

> x<-par(bg="red")
> x
$bg
[1] "transparent"

> plot(1:10)
> par(x)
> plot(1:100)

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

  • adj。該參數值用於設定在text、mtext、title中字符串的對齊方向。0表示左對齊,0.5(默認值)表示居中,而1表示右對齊(說明一下,區間[0,1]內的任何值都可以作為參數adj的有效值,並且在大部分的圖形設備中,介於區間外的值也是有效的)。註意一下,函數text中的參數adj的值可以以類似於形式adj=c(x,y)調整方向。但是在text中該參數的值影響的是對點的標記,對函數mtext和title來說,參數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會話是可交互狀態),則在繪制新圖像之前會要求用戶輸入確認信息。同樣的,會對擴展包grid和lattice的輸出有影響,甚至可能會應用到沒有屏幕輸出的設備上(但可能會沒有效果)。
  • bg。用於設定繪圖區域的背景顏色。當通過函數par()調用時,會同時設定參數new=FALSE。對很多設備來說,該參數的初始值就是該設備的背景顏色值,其他情況下一般為"white"。需要註意一點的是,一些圖形函數例如plot.default和points等也有名為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。用於設定默認的繪圖顏色(無可否認這是一個非常特別的參數,以後會總結博文專門討論如何設定顏色
    R中設置圖形參數--函數par()詳解
    )。
  • 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。圖形中字符的字體類型。最大的長度為200bytes。默認值為"",表示采用繪圖設備的默認字體。
  • 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)表示的數值型向量,用於對坐標軸的名稱進行設定。值x和y用於設定x和y軸上的刻度線的個數,而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為點線,還可以為4、5、6等),也可以為字符串(和整數是一一對應的,如"blank"、"solid"、
    "dashed"、
    "dotted"、
    "dotdash"、
    "longdash"
    或者
    "twodash"
    )。
  • lwd。線條寬度。必須為一個整數,默認值為1。具體的實現根據設備而定,有一些繪圖設備不支持線條寬度小於1。
  • mfcol,mrow。用於設定圖像設備的布局(簡單的說就是將當前的繪圖設備分隔成了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。表示點的形狀,它的值可以為數值型(介於0到25之間的數值),也可以為字符型。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取值為1、2、3中的一個,c(x1,x2)=10^par("usr")[1:2](並且此時par("usr")是指par("xlog")=TRUE情況下返回的值)。具體解釋如下:

n=1,在坐標值為10^j(j為整數)處繪制刻度線。

n=2,在坐標值為k*(10^j)處繪制刻度線,其中k為1或者5。

n=3,在坐標值為k*(10^j)處繪制刻度線,其中k為1、2或者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。

   最後,說明一點:如何設定顏色?R提供了很多和顏色相關的函數供我們調用,如colors()、palette()、rainbow()、rgb()、gray()、hsv()、hcl()等等。以後也會對“如何設定顏色”這一問題進行整理,並且接下來關於R語言的博文也會重點關註於可視化方面,包括如何繪制散點圖、條形圖、熱點圖、地圖等。


Tags: points 編輯器 坐標軸 如何

文章來源:


ads
ads

相關文章
ads

相關文章

ad