當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R par 設置或查詢圖形參數


R語言 par 位於 graphics 包(package)。

說明

par可用於設置或查詢圖形參數。可以通過將參數指定為 tag = value 形式的 par 的參數來設置參數,或者將它們作為標記值列表傳遞。

用法

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

<highlevel plot> (...., <tag> = <value>)

參數

...

tag = value 形式的參數、單個標記值列表或參數名稱的字符向量。支持的參數在“圖形參數”部分中說明。

no.readonly

邏輯性;如果 TRUE 並且沒有其他參數,則僅返回可由同一設備上的後續 par() 調用設置的參數。

細節

每個設備都有自己的一組圖形參數。如果當前設備為空設備,par將在查詢/設置參數之前打開一個新設備。 (options("device") 控製什麽設備。)

通過將參數名稱的一個或多個字符向量提供給 par 來查詢參數。

par()(無參數)或par(no.readonly = TRUE) 用於獲取所有圖形參數(作為命名列表)。它們的名稱當前取自未導出的變量 graphics:::.Pars

R.O.表示隻讀參數:這些隻能在查詢中使用,不能設置。 ("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.contourimage。此類設置僅在函數執行期間有效。不過請看評論bg,cex,col,lty,lwdpch它可以被視為某些繪圖函數的參數,而不是圖形參數。

“字符大小”的含義沒有明確定義:這是為考慮pointsize的設備設置的,但通常不是實際使用的字體係列。在內部,相應的部分( cracincxycsi )僅用於設置用於將 maroma 轉換為物理邊距的行間距。 (textstrheight 中的多行字符串使用相同的行間距乘以 lheight。)

請注意,圖形參數是建議:繪圖函數和設備不需要使用它們(對於例如 plot 的非默認方法尤其如此)。

設置參數後,它們以前的值將在不可見的命名列表中返回。這樣的列表可以作為參數傳遞給par以恢複參數值。使用 par(no.readonly = TRUE) 獲取可恢複參數的完整列表。然而,恢複所有這些並不明智:請參閱“注意”部分。

當僅查詢一個參數時,該參數的值將作為(原子)向量返回。當查詢兩個或多個參數時,它們的值將在列表中返回,列表名稱給出參數。

請注意不一致之處:設置一個參數會返回一個列表,但查詢一個參數會返回一個向量。

圖形參數

adj

adj 的值確定文本字符串在 textmtexttitle 中對齊的方式。值 0 生成左對齊文本、0.5(默認)居中文本和 1 右對齊文本。 ( 中的任何值都是允許的,並且在大多數設備上,超出該間隔的值也將起作用。)

請注意,textadj 參數還允許 adj = c(x, y) 在 x 和 y 方向上進行不同的調整。請注意,對於 text,它指的是圍繞點的文本定位,而對於 mtexttitle,它控製繪圖或設備區域內的放置。

ann

如果設置為 FALSE ,則調用 plot.default 的高級繪圖函數不會使用軸標題和整體標題來注釋它們生成的繪圖。默認是做注釋。

ask

合乎邏輯的。如果TRUE(以及R會話是交互式的),在繪製新圖形之前,係統會要求用戶輸入。由於這適用於設備,它也會影響包的輸出gridlattice。它甚至可以在非屏幕設備上進行設置,但可能不起作用。

這並不是真正的圖形參數,並且不推薦使用它,而是使用 devAskNewPage

bg

用於設備區域背景的顏色。當從 par() 調用時,它還會設置 new = FALSE 。有關合適的值,請參閱“顏色規格”部分。對於許多設備,初始值是從設備的 bg 參數設置的,對於其餘設備,它通常是 "white"

請注意,某些圖形函數(例如plot.defaultpoints)具有具有不同含義的該名稱的參數。

bty

確定繪製繪圖的box類型的字符串。如果 bty"o" (默認值)、 "l""7""c""u""]" 之一,則生成的框類似於相應的大寫字母。 "n" 值會抑製該框。

cex

給出繪圖文本和符號相對於默認值應放大的數值。當設備打開時,它以 1 開頭,並在布局更改時重置,例如通過設置 mfrow

請注意,某些圖形函數(例如plot.default)具有該名稱的參數,該參數會乘以該圖形參數,而某些函數(例如pointstext)接受回收的值向量。

cex.axis

用於軸注釋相對於 cex 當前設置的放大倍數。

cex.lab

用於 x 和 y 標簽相對於 cex 當前設置的放大倍數。

cex.main

用於主標題相對於 cex 當前設置的放大倍數。

cex.sub

用於字幕相對於 cex 當前設置的放大倍數。

cin

R.O.;字符大小(width, height)以英寸來算。這些測量值與cra,用不同的單位表示。

col

默認繪圖顏色的規範。請參閱“顏色規格”部分。

某些函數(例如linestext)接受被回收的值向量,並且解釋可能略有不同。

col.axis

用於軸注釋的顏色。默認為 "black"

col.lab

用於 x 和 y 標簽的顏色。默認為 "black"

col.main

用於繪圖主標題的顏色。默認為 "black"

col.sub

用於繪圖副標題的顏色。默認為 "black"

cra

R.O.;默認字符大小(width, height)在‘rasters’(像素)中。有些設備沒有像素的概念,因此假定任意像素大小,通常為 1/72 英寸。這些測量值與cin,用不同的單位表示。

crt

指定單個字符應如何旋轉的數值(以度為單位)。期望 90 的倍數以外的值起作用是不明智的。與進行字符串旋轉的 srt 進行比較。

csi

R.O.; (default-sized) 個字符的高度(以英寸為單位)。與par("cin")[2].

cxy

R.O.;默認字符大小(width, height)以用戶坐標單位表示。par("cxy")par("cin")/par("pin")縮放到用戶坐標。注意c(strwidth(ch), strheight(ch))對於給定的字符串ch通常更加精確。

din

R.O.;設備尺寸,(width, height), 以英寸來算。也可以看看dev.size,當屏幕上的設備窗口大小調整時,它會立即更新。

err

(未實現;R當繪圖區域之外的點處於靜音狀態時不是繪製。)所需的錯誤報告程度。

family

用於繪製文本的字體係列的名稱。允許的最大長度為 200 字節。每個圖形設備都會將該名稱映射到設備特定的字體說明。默認值是"",這意味著將使用默認的設備字體(這些字體應該在設備的幫助頁麵上列出)。標準值是 "serif""sans""mono" ,並且 Hershey 字體係列也可用。 (設備可能會定義其他設備,有些設備會完全忽略此設置。以 "Hershey" 開頭的名稱會被特殊處理,並且隻能用於內置的 Hershey 字體係列。)這可以為 text 內聯指定。

fg

用於繪圖前景的顏色。這是用於繪圖周圍的軸和框等內容的默認顏色。當從 par() 調用時,這也會將參數 col 設置為相同的值。請參閱“顏色規格”部分。一些設備有一個參數來設置初始值,否則為 "black"

fig

c(x1, x2, y1, y2) 形式的數值向量,給出設備顯示區域中圖形區域的 (NDC) 坐標。如果您設置此選項,則與 S 不同,您將開始一個新繪圖,因此要添加到現有繪圖,也請使用 new = TRUE

fin

圖形區域尺寸 (width, height) ,以英寸為單位。如果你設置了這個,與 S 不同,你會開始一個新的繪圖。

font

一個整數,指定文本使用哪種字體。如果可能,設備驅動程序會進行安排,使 1 對應於純文本(默認),2 對應於粗體,3 對應於斜體,4 對應於粗體斜體。此外,字體 5 預計是 Adobe 符號編碼中的符號字體。在某些設備上,可以通過 family 選擇字體係列,以選擇不同的 5 種字體集。

font.axis

用於軸注釋的字體。

font.lab

用於 x 和 y 標簽的字體。

font.main

用於繪圖主標題的字體。

font.sub

用於繪圖副標題的字體。

lab

形式的數值向量c(x, y, len)它修改軸注釋的默認方式。的值xy給出 x 軸和 y 軸上刻度線的(近似)數量,並且len指定標簽長度。默認為c(5, 5, 7).len 未實現R.

las

{0,1,2,3} 中的數字;軸標簽的樣式。

0:

始終平行於軸[默認],

1:

始終水平,

2:

始終垂直於軸線,

3:

始終垂直。

也受 mtext 支持。請注意,通過參數 srtpar 的字符串/字符旋轉不會影響軸標簽。

lend

線端樣式。這可以指定為整數或字符串:

0

"round" 表示圓線帽[默認];

1

"butt" 表示對接線帽;

2

"square" 均方線帽。

lheight

行高乘數。文本行的高度(用於垂直間隔多行文本)是通過將字符高度乘以當前字符擴展和行高乘數得出的。默認值為 1。用於 textstrheight

ljoin

線連接樣式。這可以指定為整數或字符串:

0

"round" 表示圓角線連接[默認];

1

"mitre" 表示斜接線連接;

2

"bevel" 表示斜角線連接。

lmitre

線斜接限製。這控製斜接線連接何時自動轉換為斜角線連接。該值必須大於 1,默認值為 10。並非所有設備都會遵循此設置。

lty

線路類型。線型可以指定為整數(0=空白、1=實線(默認)、2=虛線、3=點線、4=點線、5=長線、6=雙線)或字符串之一 "blank""solid""dashed""dotted""dotdash""longdash""twodash" ,其中 "blank" 使用“不可見線”(即不繪製它們)。

或者,可以給出最多 8 個字符的字符串(來自 c(1:9, "A":"F") ),給出交替繪製和跳過的線段的長度。請參閱“線路類型規範”部分。

linessegments 等函數接受回收的值向量。

lwd

線寬,正數,默認為 1 。解釋是特定於設備的,並且某些設備不實現小於 1 的線寬。 (詳細解釋請參見設備幫助。)

linessegments 等函數接受回收的值向量:在這種用途中,對應於值 NANaN 的行被省略。 0 的解釋是特定於設備的。

mai

形式的數值向量c(bottom, left, top, right)它給出了以英寸為單位指定的邊距大小。
Figure: mai.png

mar

c(bottom, left, top, right) 形式的數值向量,給出要在圖的四個邊上指定的邊距行數。默認為 c(5, 4, 4, 2) + 0.1

mex

mex 是字符大小擴展因子,用於說明繪圖邊的坐標。請注意,這不會更改字體大小,而是指定用於在 marmai 之間以及 omaomi 之間轉換的字體大小(作為 csi 的倍數)。

當設備打開時,它以 1 開始,並在布局更改時重置(同時重置 cex )。

mfcol, mfrow

c(nr, nc) 形式的向量。後續圖形將分別按列 ( mfcol ) 或行 ( mfrow ) 在設備上的 nr × nc 數組中繪製。

在恰好有兩行和兩列的布局中,"cex" 的基值減小 0.83 倍:如果有 3 行或更多行或列,則減小係數為 0.66。

設置布局會將 cexmex 的基值重置為 1

如果查詢其中任何一個,它將給出當前布局,因此查詢無法告訴您數組的填充順序。

考慮替代方案 layoutsplit.screen

mfg

c(i, j) 形式的數值向量,其中 ij 指示接下來要繪製圖形數組中的哪個圖形(如果設置)或正在繪製(如果查詢)。該數組必須已由 mfcolmfrow 設置。

為了與 S 兼容,也接受 c(i, j, nr, nc) 形式,此時 nrnc 應為當前行數和列數。不匹配將被忽略,並發出警告。

mgp

軸標題、軸標簽和軸線的邊距線(以 mex 單位表示)。請注意, mgp[1] 影響 titlemgp[2:3] 影響 axis 。默認為 c(3, 1, 0)

mkh

當值為時要繪製的符號的高度(以英寸為單位)pch是一個整數。完全被忽略了R.

new

邏輯上,默認為FALSE。如果設置為TRUE,下一個高級繪圖命令(實際上plot.new) 繪製前不應清潔框架就好像它在一個新的設備。嘗試使用時會出現錯誤(忽略警告)new = TRUE在當前不包含高級繪圖的設備上。

oma

形式的向量c(bottom, left, top, right)給出文本行中外邊距的大小。
Figure: oma.png

omd

c(x1, x2, y1, y2) 形式的向量,給出 NDC(= 標準化設備坐標)中外邊距內的區域,即作為設備區域的一部分(在 中)。

omi

c(bottom, left, top, right) 形式的向量給出外邊距的大小(以英寸為單位)。

page

R.O.;一個布爾值,指示下一次調用是否plot.new即將開始新的一頁。這個值可能是FALSE如果頁麵上有多個圖形。

pch

指定符號的整數或用作繪圖點默認值的單個字符。有關可能的值及其解釋,請參閱points。請注意,隻有整數和單字符串可以設置為圖形參數(而不是 NANULL )。

某些函數(例如points)接受回收的值向量。

pin

當前繪圖尺寸 (width, height) ,以英寸為單位。

plt

c(x1, x2, y1, y2) 形式的向量,以當前圖形區域的分數形式給出繪圖區域的坐標。

ps

整數;文本的點大小(但不是符號)。與大多數設備的 pointsize 參數不同,這不會改變 marmai (也不改變 omaomi )之間的關係。

“點大小”的含義因設備而異,但大多數設備表示 1bp 的倍數,即 1/72 英寸。

pty

指定要使用的繪圖區域類型的字符; "s" 生成方形繪圖區域,"m" 生成最大繪圖區域。

smo

(未實現)指示圓和圓弧的平滑程度的值。

srt

字符串旋轉度數。請參閱有關 crt 的評論。僅受 text 支持。

tck

刻度線的長度作為繪圖區域的寬度或高度中較小者的分數。如果tck >= 0.5它被解釋為相關邊的分數,所以如果tck = 1繪製網格線。默認設置 (tck = NA ) 是使用 tcl = -0.5

tcl

刻度線的長度占文本行高度的一部分。默認值為-0.5;設置tcl = NA設置tck = -0.01,這是S的默認值。

usr

c(x1, x2, y1, y2) 形式的向量給出繪圖區域的用戶坐標的極值。當使用對數刻度時(即 par("xlog") 為 true,見下文),則 x-limits 將是 10 ^ par("usr")[1:2] 。 y 軸也是如此。

xaxp

c(x1, x2, n) 形式的向量,給出當 par("xlog") 為 false 時極限刻度線的坐標以及刻度線之間的間隔數。否則,當對數坐標處於活動狀態時,這三個值具有不同的含義:對於小範圍,n 為負數,刻度與線性情況相同,否則,n 位於 1:3 中,指定一個案例編號,x1x2 是用戶坐標 10 ^ par("usr")[1:2] 內 10 的最低和最高冪。 ("usr" 坐標在這裏進行了 log10 轉換!)

n = 1

將在 處為整數 生成刻度線,

n = 2

給出標記

n = 3

給出標記

參看axTicks()為了一個純粹的R的實施。

當設置用戶坐標係時,例如通過開始新頁麵或通過調用 plot.window 或設置 par("usr")n 取自 par("lab") ,此參數將被重置。它會影響第 1 側或第 3 側對 axis 的後續調用的默認行為。

它僅與默認數字軸係統相關,與日期等無關。

xaxs

用於 x 軸的軸間隔計算的樣式。可能的值為"r","i","e","s","d"。樣式通常由數據範圍或xlim,如果給定的話。
風格"r"(常規)首先將數據範圍在每一端擴展 4%,然後找到一個具有適合擴展範圍的漂亮標簽的軸。
風格"i"(內部)隻是找到一個帶有漂亮標簽且適合原始數據範圍的軸。
風格"s"(標準)找到一個帶有漂亮標簽的軸,其中原始數據範圍適合。
風格"e"(擴展)就像風格"s",除了它還確保在邊界框內有繪製符號的空間。
風格"d"(direct) 指定應在後續繪圖中使用當前軸。
(僅有的"r""i"樣式已實施於R.)

xaxt

指定 x 軸類型的字符。指定 "n" 會禁止繪製軸。標準值為 "s" :為了與 S 值兼容 "l""t" 被接受,但等同於 "s""n" 以外的任何值都意味著繪圖。

xlog

邏輯值(請參閱 plot.default 中的 log )。如果 TRUE ,則使用對數刻度(例如,在 plot(*, log = "x") 之後)。對於新設備,默認為 FALSE ,即線性比例。

xpd

邏輯值或 NA 。如果 FALSE ,所有繪圖都被剪切到繪圖區域,如果 TRUE ,所有繪圖都被剪切到圖形區域,如果 NA ,所有繪圖都被剪切到設備區域。另請參閱clip

yaxp

c(y1, y2, n) 形式的向量,給出極限刻度線的坐標以及刻度線之間的間隔數,除非對於對數坐標,請參見上麵的xaxp

yaxs

用於 y 軸的軸間隔計算的樣式。請參閱上麵的xaxs

yaxt

指定 y 軸類型的字符。指定 "n" 會抑製繪圖。

ylbias

用於在頁邊距中定位文本的正實數值axismtext。默認值原則上是特定於設備的,但目前0.2對於所有的R自己的設備。將其設置為0.2為了兼容R< 2.14.0 上x11windows()設備。

ylog

邏輯值;請參閱上麵的xlog

顏色規格

可以用幾種不同的方式指定顏色。最簡單的方法是使用給出顏色名稱的字符串(例如 "red" )。可以使用函數 colors 獲得可能顏色的列表。或者,可以使用 "#RRGGBB" 形式的字符串直接根據其 RGB 分量來指定顏色,其中 RRGGBB 中的每對都由兩個十六進製數字組成,給出範圍內的值00FF 。還可以通過在小顏色表中提供索引來指定顏色, palette :索引環繞,因此使用大小為 8 的默認調色板, 102 相同。這提供了與 S 的兼容性。索引 0 對應於背景顏色。請注意,調色板(除了每個設備的 0 之外)是每個會話的設置。

負整數顏色是錯誤的。

此外,"transparent" 是透明的,對於填充區域(例如背景!)很有用,但對於線條或文本等內容不可見。在大多數情況下(整數) NA 相當於 "transparent" (但不適用於 textmtext )。

半透明顏色可在支持它們的設備上使用。

函數 rgbhsvhclgrayrainbow 提供了生成顏色的其他方法。

線型規格

線型可以通過給小型內置線型表提供索引來指定(1 = 實線,2 = 虛線等,請參閱上麵的 lty),也可以直接指定為線的開/關延伸長度。這是通過偶數個(最多八個)字符的字符串來完成的,即非零(十六進製)數字,它給出了字符串中連續位置的長度。例如,字符串 "33" 指定三個單位打開,然後三個單位關閉,"3313" 指定三個單位打開,然後三個單位關閉,最後一個單位打開,最後三個單位關閉。這裏的 ‘units’ (在大多數設備上)與 lwd 成比例,而 lwd = 1 則以像素或點或 1/96 英寸為單位。

五個標準 dash-dot 線型 ( lty = 2:6 ) 對應於 c("44", "13", "1343", "73", "2262")

請注意,NA 不是 lty 的有效值。

注意

如果設備大小已調整,則很難預測示例中恢複所有(可設置)圖形參數的效果。他們中的一些人試圖以不同的方式設置相同的東西,字母表中最後的人將獲勝。特別是, maimarpinpltpty 的設置相互作用,外邊距設置、圖形布局和圖形區域大小也是如此。

例子

op <- par(mfrow = c(2, 2), # 2 x 2 pictures on one plot
          pty = "s")       # square plotting region,
                           # independent of device size

## At end of plotting, reset to previous settings:
par(op)

## Alternatively,
op <- par(no.readonly = TRUE) # the whole list of settable par's.
## do lots of plotting and par(.) calls, then reset:
par(op)
## Note this is not in general good practice

par("ylog") # FALSE
plot(1 : 12, log = "y")
par("ylog") # TRUE

plot(1:2, xaxs = "i") # 'inner axis' w/o extra space
par(c("usr", "xaxp"))

( nr.prof <-
c(prof.pilots = 16, lawyers = 11, farmers = 10, salesmen = 9, physicians = 9,
  mechanics = 6, policemen = 6, managers = 6, engineers = 5, teachers = 4,
  housewives = 3, students = 3, armed.forces = 1))
par(las = 3)
barplot(rbind(nr.prof)) # R 0.63.2: shows alignment problem
par(las = 0)  # reset to default

require(grDevices) # for gray
## 'fg' use:
plot(1:12, type = "b", main = "'fg' : axes, ticks and box in gray",
     fg = gray(0.7), bty = "7" , sub = R.version.string)

ex <- function() {
   old.par <- par(no.readonly = TRUE) # all par settings which
                                      # could be changed.
   on.exit(par(old.par))
   ## ...
   ## ... do lots of par() settings and plots
   ## ...
   invisible() #-- now,  par(old.par)  will be executed
}
ex()

## Line types
showLty <- function(ltys, xoff = 0, ...) {
   stopifnot((n <- length(ltys)) >= 1)
   op <- par(mar = rep(.5,4)); on.exit(par(op))
   plot(0:1, 0:1, type = "n", axes = FALSE, ann = FALSE)
   y <- (n:1)/(n+1)
   clty <- as.character(ltys)
   mytext <- function(x, y, txt)
      text(x, y, txt, adj = c(0, -.3), cex = 0.8, ...)
   abline(h = y, lty = ltys, ...); mytext(xoff, y, clty)
   y <- y - 1/(3*(n+1))
   abline(h = y, lty = ltys, lwd = 2, ...)
   mytext(1/8+xoff, y, paste(clty," lwd = 2"))
}
showLty(c("solid", "dashed", "dotted", "dotdash", "longdash", "twodash"))
par(new = TRUE)  # the same:
showLty(c("solid", "44", "13", "1343", "73", "2262"), xoff = .2, col = 2)
showLty(c("11", "22", "33", "44",   "12", "13", "14",   "21", "31"))

參考

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

Murrell, P. (2005) R Graphics. Chapman & Hall/CRC Press.

也可以看看

plot.default 用於一些高級繪圖參數; colors; clip; options用於其他設置參數;圖形設備 x11postscript 並通過 layoutsplit.screen 設置設備區域。

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Set or Query Graphical Parameters。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。