您好,登錄后才能下訂單哦!
R有著非常強大的繪圖功能,我們可以利用簡單的幾行代碼繪制出各種圖形來,但是有時候默認的圖形設置沒法滿足我們的需要,甚至會碰到各種各樣的小問題:如坐標軸或者標題出界了,或者圖例說明的大小或者位置遮擋住了圖形,甚至有時候默認的顏色也不能滿足我們的需求。如何進行調整呢?這就用到了“強大”的函數par()。我們可以通過設定函數par()的各個參數來調整我們的圖形,這篇博文就是對函數par()的各個參數進行一下總結。
函數par()的使用格式如下:
par(..., no.readonly = FALSE)
其中...表示所有類似于tag=value形式的參數。下面會具體的對這些參數進行描述。當參數no.readonly=TRUE時,函數par()就只允許有這一個參數了,并且會返回當前繪圖設備中各個參數的參數值。
每一個圖形設備都有自己的繪圖參數,如果當前還沒有打開繪圖設備,那么函數par()在進行參數設置之前會自動的打開一個新繪圖設備。
如前面所說,直接在R編輯器中輸入命令par()或者par(no.readonly=TRUE)都可以獲取當前的各個繪圖參數。
函數par()中的參數可以分為三大類:
只能讀取,不能進行設置。包括參數cin,cra,
csi,
cxy
, din。
只能通過函數par()進行設置。包括參數:
"ask"
,
"fig"
, "fin"
,
"lheight"
,
"mai"
, "mar"
, "mex"
, "mfcol"
, "mfrow"
, "mfg"
,
"new"
,
"oma"
, "omd"
, "omi"
,
"pin"
, "plt"
, "ps"
, "pty"
,
"usr"
,
"xlog"
, "ylog"
當一個參數的值被設定時,默認的會返回設定之前這個參數的值,我們可以通常一些變量把這些值保存下來。執行完操作之后,可以利用這些歷史值進行恢復設定(但是不建議這么做,因為可能會引起一些參數值沖突)。如:
> 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。用于設定默認的繪圖顏色(無可否認這是一個非常特別的參數,以后會總結博文專門討論如何設定顏色
)。
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)表示的數值型向量,用于對坐標軸的名稱進行設定。值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語言的博文也會重點關注于可視化方面,包括如何繪制散點圖、條形圖、熱點圖、地圖等。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。