当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。