R 學習筆記: Par 函數
par 有太多的參數, 遇到問題再查是個好辦法, 不過首先應該知道 par 能夠調整哪些方面, 這就需要有個小的總結.
par() 本身有 bool 參數 no.readonly, 單純的 par() 或者 par(no.readonly = TRUE) 可以用來獲取所有的參數, 返回結果為 list, 可以保存備份.
par 可以設置的繪圖相關參數有 3 類:
- 只可以查詢而不可以修改的參數, 即 readonly 參數, "cin", "cra", "csi", "cxy", "din" 和 "page".
- 僅能通過 par 函數進行設置的參數: "ask", "fig", "fin", "lheight", "mai", "mar", "mex", "mfcol", "mfrow", "mfg", "new", "oma", "omd", "omi", "pin", "plt", "ps", "pty", "usr", "xlog", "ylog", "ylbias".
- 剩下的是可以被高級繪圖函數設置的參數, 這些高級繪圖函數主要包括: plot.default, plot.window, points, lines, abline, axis, title, text, mtext, segments, symbols, arrows, polygon, rect, box, contour, filled.contour and image. 相應的參數如: lwd, lty, col, cex 等.
readonly 參數
- cin: 以 inch 為單位的字元大小 (寬, 高), 如 LaTex 中使用 M x 等寬度做度量.
- cra: 以 raster (柵格, pixel) 來表示的字元大小 (寬, 高), 和 cin 的區別在於單位不同.
- csi: 以 inch 為單位的字元高度, 同 cin 的第二個值.
- cxy: 以用戶坐標單位中默認字元大小 (寬,高), 是 par("cin")/par("pin"), 其實就是字元對於特定坐標軸的相對大小.
- din: 以 inch 為單位的設備維度 (寬, 高), 即圖像輸出設備能夠輸出的圖像的大小.
- page: 一個 bool 值, 如果接下來的圖是要開啟新的圖頁, 則其值為 TRUE; 如果接下來的圖是不開啟新的圖頁, 則值為 FALSE. 設定 new 參數可以改變 page 的值, page 實際上是用來指示是否開啟新圖.
par 限制設定參數
有些參數只能夠通過 par 函數來設定, 這些參數對於組合圖和設定圖的邊框等有作用.
- ask: bool 值, 如果是 TRUE 則在繪製新圖形的時候會詢問用戶.
- fig: 說明了新畫圖在輸出設備上顯示的位置, 其值是一個 vector c(xleft, xright, ybottom, ytop ), 其中每個值均大於 0 小於 1, 實際上是相對位置.
- fin: 以 inch 為單位的圖的維度 (寬, 高), 如果改輸出設備僅輸出一張圖, 則 fin 和 din 的值是相同的, 如果輸出設備輸出由若干子圖構成的圖, 則 fin 和相應子圖對應.
- lheight: 行高倍數, 默認是 1, 通過設置 lheight 可以調整一行文字的行高, lheight 變大, 兩行文字的行間距也會變大, 主要在 text 和 strheight 中使用.
- mai: 以 inch 為單位的圖像邊距, c(bottom, left, top, right).
- mar: 以行數來表示圖像邊距, c(bottom, left, top, right), 默認是 c(5, 4, 4, 2) + 0.1.
- mex: 是在邊界中的坐標軸的擴展參數 (character size expansion factor), 有些類似調整字體大小的 cex, 是一個比例, 來調整 mai mar omi oma. 當頁面布局被設置的時候, mex 和 cex 都會被重新設置.
- mfcol, mfrow: 調整圖形輸出設備中子圖排列的向量, c(nrow, ncol), mfcol 讓子圖按照列優先排列, 相應的, mfrow 讓子圖按照行優先排列. 當設置 mfcol mfrow 後, cex 和 mex 的基本單位都相應減小.
- mfg: 指示下一個圖像的輸出位置, 設置可以是 c(row, col), 通過設置 mfg 可以控制下一個子圖輸出在圖像輸出設備的位置. mfg 的設置是和 mfrow 或者 mfcol 的設置相對應的, par()$mfg 將返回 c(row, col, nrow, ncol).
- new: bool 值, 默認為 FALSE, 如果設置為 TRUE, page 的值會變成 FALSE, 那麼使用高級繪圖函數不會清除當前內容, 而是把圖像重疊.
- oma: 以行數為單位設置的外邊界尺度, c(bottom, left, top, right).
- omd: 給出了按照設備值進行標準化的外邊界範圍, c(x1, x2, y1, y2), 每個值的取值範圍在 [0,1], 為相對比例.
- omi: 以 inch 為單位設置外邊界尺度, c(bottom, left, top, right).
- pin: 以 inch 為單位表示的當前圖像的維度.
- plt: 當前繪圖區域的範圍, c(x1, x2, y1, y2), 其中每個取值是相對於當前圖像輸出設備的比例, 和 omd 類似.
- ps: 文字點大小的值, 是一個設備決定的值, a multiple of 1bp, that is 1/72 of an inch.
- pty: 表示當前繪圖區域的形狀, "s"表示生成一個正方形區域, 而"m"表示生成最大的繪圖區域. 如果輸出設備是長方形, 則 "s" 將限定輸出正方形.
- usr: 當前繪圖區域的坐標軸範圍, c(xleft, xright, ybottom, ytop), 可以直接引用 usr 的值來獲取當前圖形的 x 坐標軸或 y 坐標軸的 limit. 如果是 log 坐標軸, 則該範圍也是 log 值.
- xlog, ylog: 設置 x 或者 y 為對數坐標軸的 bool 變數. 如果值為 TRUE, 則相應的坐標軸為對數坐標軸, 同時 usr 所指代的也變成對數.
- ylbias:
高級繪圖函數支持參數
有些參數可以在高級繪圖函數中進行設置, 主要是調解輸出顯示情況的參數.
大小- cex: 設置文字和符號相對於默認值的大小, 為一個比例數值. 當使用 mfrow 或 mfcol 也會改變該值.
- cex.axis: 在當前 cex 基礎上對坐標軸的大小進行調整的比例.
- cex.lab: 在當前 cex 基礎上對坐標軸標籤的大小進行調整的比例.
- cex.main: 在當前 cex 基礎上對主標題的大小進行調整的比例.
- cex.sub: 在當前 cex 基礎上對小標題的大小進行調整的比例.
顏色
- 自bg: 設定背景的顏色, 如果設置 bg 則 new 會同時被設置為 FALSE, 默認的 bg 為 "white".
- fg: 設置前景的顏色, 默認是 "black", 應用於坐標軸, 標題等選項.
- col: 設置顏色向量.
- col.axis: 設置坐標軸的顏色, 默認是 "black".
- col.lab: 設置坐標軸標籤的顏色, 默認是 "black".
- col.main: 設置主標題的顏色, 默認是 "black".
- col.sub: 設置小標題的顏色, 默認是 "black".
文字
- adj: text, mtext and title. 調整文字的調整方式的一個數值, 0 代表向左對齊, 0.5 代表居中 (默認), 1 代表向右對齊, 取值可以在 [0,1] 之間任意.
- crt: 設置單個的字元應該旋轉的角度.
- srt: 設置字元串成體的旋轉的角度.
- family: 設置字體家族的名稱, 默認值是 "", 代表使用設備默認的字體, 有 "serif" "sans" "mono" 等. 可以使用 library(extrafont) 來載入字體, 使用 family 來設置使用地字體.
- font: 指明使用字體的整數, 1 是普通, 2 是粗體, 3 是義大利體, 4 是粗義大利體. 5 是符號.
- font.axis: 坐標軸的字體.
- font.lab: 坐標軸標籤的字體.
- font.main: 主標題的字體.
- font.sub: 小標題的字體.
線條
- lty: line type. 可以是數字或者字元, (0 = "blank", 1 = "solid" (default), 2 = "dashed", 3 = "dotted", 4 = "dotdash", 5 = "longdash", 6 = "twodash")
- lwd: line width. 默認是 1, 設置線寬的放大倍數.
- lmitre: 設置轉折什麼時候應該從 mitre 轉換為 bevel, 值應該大於 1, 默認是 10.
- lend: 線條結束的風格, 可以是數字或字元串. 0, 或者 "round", 線頭為圓形; 1, 或者 "butt", 線頭為平頭; 2, 或者 "square", 線頭為正方形, 即增加一個正方形.
- ljoin: 線條轉折的風格, 可以是數字或字元串. 0, 或者 "round", 圓形轉折; 1, 或者 "mitre", 楔形轉折; 2, 或者 "bevel", 平截轉折.
(圖片引自: http://www.statmethods.net/advgraphs/images/lines.png)
點- pch: 設置繪圖所用的點的樣式, 可以是數字指明符號, 或者使用字元做點. points 等會繪點函數接受. 使用 col 可以設置實心點的顏色和空心點的外邊界, 使用 bg 可以設置空心點內部顏色.
(圖片引自: http://www.statmethods.net/advgraphs/images/points.png)
坐標軸
- ann: 如果該值為 FALSE, 則高級繪圖函數默認不輸出坐標軸標題等注釋. 默認為 TRUE, 即輸出圖像注釋.
- lab: 設置坐標軸注釋方式的向量 c(x, y, len), 默認是 c(5, 5, 7). x 指的是在 x 軸的刻度的數量, y 指的是在 y 軸的刻度的數量, len 指的是刻度的長度.
- las: 設置坐標軸標籤的風格, 在 0, 1, 2, 3 中取值. 0, 默認, 和坐標軸平行; 1, 水平; 2, 和坐標軸垂直; 3, 垂直. crt 和 srt 不會對其產生影響.
- tck: 刻度線的相對長度,為一個有符號的比值,表示繪圖區域的高度或寬度的比例, 如果是正值, 則在圖像區域內畫, 當 tck = 1 的時候, 繪製網格; 如果是負值, 則向邊界繪製, 默認為 NA 時, 使用 tcl = -0.5.
- tcl: 刻度線的相對長度, 為相對於一行高度的比值, 正值表示向繪圖中心區域延伸, 負值表示向邊緣延伸.
- xaxp, yaxp: 設置極值刻度的樣式. c(x1, x2, n), c(y1, y2, n). 當 xlog = FALSE 或者 ylog = FALSE 的時候, 相應的 xaxp 和 yaxp 中, x1 x2 和 y1 y2 分別表示 x 軸極值和 y 軸極值, n 表示在極值中間的刻度的個數. xlog = TRUE 和 ylog = TRUE 時, n 的調整會相應改變. 通過 lab 的前兩項也可以設置 x 軸和 y 軸 n.
- xaxs, yaxs: 繪圖區域和坐標軸間隔的設置, 值為字元, R 中暫時只支持 "r" 和 "i". "r" (regular) 先把數據的極值向兩端延伸 4% 再尋找合適的坐標軸; "i" (internal) 直接在原來的數據範圍內尋找合適的位置繪製坐標軸; "s" (standard) 找到合適的地方繪製坐標軸; "e" (extended) 類似於 "s" 不過其保證圖像中符號可以正確被繪製; "d" (direct) 後面繪圖也用本次坐標軸.
- xaxt, yaxt: 坐標軸的型式, 值為字元. "n" 表示不繪製坐標軸, 其他字元均表示繪製坐標軸.
xlog, ylog: 坐標軸取 log 值.
bty: 設定 box 所繪製的方框的類型, plot 等函數也可以設置, 默認為 "o", 設置的型式類似其大寫字母性狀. "o" 代表四周都有線; "l" 代表左側和下側有線; "7" 代表右側和上側有線; "c" 代表左側和上下側均有線; "u" 代表左右兩側和下側有線; "]" 代表右側和上下側均有線; "n" 不輸出方框.
- xpd: 剪切圖片, 可以參看 clip 函數. 如果 xpd 值為 FALSE, 所有的圖形被剪切為繪圖區域 (plot); 如果 xpd 值為 TRUE, 所有圖形被剪切為圖像區域 (figure) (繪圖區域和邊緣 (margin)); 如果 xpd 值為NA, 則圖形被剪切為設備區域, 即圖像區域和外邊界(outer) (參看下面圖像區域圖片).
R 繪圖區域
參考其他網上給出的繪圖區域和邊緣區域可以更好理解繪圖參數的設置.
(圖片引自: http://research.stowers-institute.org/efg/R/Graphics/Basics/mar-oma/Figure2A.gif)
另外歡迎大家關注我們的微信公眾號:NGS_learning
高通量測序技術!
推薦閱讀:
※【R語言基礎】02. 基本數據結構
※翻譯:用R語言進行數據清洗
※如何在Quora上獲得更多的贊——來自10393個回答的實證
※R語言可視化——圖表美化與套用主題(上)
※[譯]快速上手:在R中使用XGBoost演算法