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


R axis 将轴添加到绘图中


R语言 axis 位于 graphics 包(package)。

说明

向当前绘图添加一个轴,允许指定边、位置、标签和其他选项。

用法

axis(side, at = NULL, labels = TRUE, tick = TRUE, line = NA,
     pos = NA, outer = FALSE, font = NA, lty = "solid",
     lwd = 1, lwd.ticks = lwd, col = NULL, col.ticks = NULL,
     hadj = NA, padj = NA, gap.axis = NA, ...)

参数

side

一个整数,指定要在绘图的哪一侧绘制轴。轴的放置方式如下:1=下方,2=左侧,3=上方,4=右侧。

at

要绘制刻度线的点。非有限(无限、 NaNNA )值将被省略。默认情况下(当 NULL 时)计算刻度线位置,请参阅下面的“详细信息”。

labels

这可以是指定是否在刻度线处进行(数字)注释的逻辑值,也可以是要放置在刻度点处的标签的字符或表达式向量。 (其他对象由 as.graphicsAnnot 强制。)如果这不合逻辑,则还应提供 at 且长度相同。如果 labels 在强制转换后长度为零,则与提供 TRUE 具有相同的效果。

tick

指定是否应绘制刻度线和轴线的逻辑值。

line

如果不是 NA ,则绘制轴线的边距中的行数。

pos

要绘制轴线的坐标:如果不是 NA ,则会覆盖 line 的值。

outer

一个逻辑值,指示是否应在外部绘图边距而不是标准绘图边距中绘制轴。

font

文本的字体。默认为 par("font")

lty

轴线和刻度线的线型。

lwd , lwd.ticks

轴线和刻度线的线宽。零或负值将抑制线条或刻度线。

col , col.ticks

分别表示轴线和刻度线的颜色。 col = NULL 表示使用 par("fg") ,可能指定为内联,而 col.ticks = NULL 表示使用 col 解析到的任何颜色。

hadj

对与读取方向平行 (‘horizontal’) 的所有标签进行调整(请参阅par("adj"))。如果这不是有限值,则使用默认值(平行于轴的字符串居中,否则最接近轴的一端对齐)。

padj

垂直于阅读方向调整每个刻度标签。对于平行于轴的标签,padj = 0 表示左对齐或下对齐,padj = 1 表示右对齐或上对齐(相对于线)。这可以是一个为每个字符串赋予值的向量,并将根据需要回收。

如果 padj 不是有限值(默认值),则 par("las") 的值决定调整。对于垂直于轴绘制的字符串,默认是将字符串居中。

gap.axis

一个可选(通常为非负)数字因子,与 ‘m’ 的大小相乘,以确定绘制的标签之间的最小间隙,请参阅“详细信息”。默认值 NA 对应于平行于轴绘制的刻度标签的 10.25 否则,即默认值相当于

  perpendicular <- function(side, las) {
    is.x <- (side %% 2 == 1) # is horizontal x-axis
    ( is.x && (las %in% 2:3)) ||
    (!is.x && (las %in% 1:2))
  }
  gap.axis <- if(perpendicular(side, las)) 0.25 else 1

当显式指定 at = .. tick-mark 位置时,gap.axis 通常可能是相关的。

...

其他 graphical parameters 也可以作为参数传递给该函数,特别是 cex.axiscol.axisfont.axis 用于轴注释,即刻度标签, mgpxaxpyaxp 用于定位,tcktcl 用于刻度线长度和方向,las 用于垂直/水平标签方向,或 fg 代替 colxpd 用于剪切。有关这些,请参阅par

参数 xaxt(第 1 面和第 3 面)和 yaxt(第 2 面和第 4 面)控制是否绘制轴。

请注意,lab 将部分匹配参数 labels,除非还提供了后者。 (由于plot.window已经设置了默认轴,lab将不会被axis作用。)

细节

轴线是从 at 的最低值到最高值绘制的,但会在绘图区域被剪裁。默认情况下,仅绘制从绘图区域内的点绘制的刻度(达到舍入误差的容差),但刻度及其标签可能会延伸到绘图区域之外。使用xpd = TRUExpd = NA 允许轴进一步延伸。

at = NULL 时,漂亮的刻度线位置是从 par("xaxp")"yaxp"par("xlog") (或 "ylog" )内部计算的(与 axTicks(side) 相同)。请注意,如果调整屏幕上绘图的大小(例如,如果设置了 plot 参数 asp (请参阅 plot.window ),这些位置可能会发生变化。)

如果未指定 labels,则为 at 提供或计算的数值将转换为字符串,就好像它们是由 print.default(digits = 7) 打印的数值向量一样。

该代码尽力不绘制重叠的刻度标签,因此将省略它们邻接或重叠先前绘制的标签的标签。例如,这可能会导致每隔一个刻度被标记一次。刻度从左到右或从下到上绘制,空间至少为 ‘m’ 的大小乘以gap.axis,位于标签之间。在之前的R版本,这仅适用于写入的标签平行线到轴方向,因此不适用于例如las = 2。使用gap.axis = -1恢复之前的(有缺陷的)行为(在垂直情况下)。

如果设置了 linepos ,则它们(而不是 par("mgp")[3] )确定轴线和刻度线的位置,并且刻度标签将放置在 par("mgp")[2] 进一步的行中(或朝向 pos ) 边距。

有几个图形参数会影响轴的绘制方式。轴和刻度标签的垂直(对于边 1 和 3)位置由 mgp[2:3]mex 控制,刻度的大小和方向由 tcktcl 控制,以及刻度的外观由 cex.axiscol.axisfont.axis 标记标签,方向由 las 控制(但不是 srt ,与 S 不同,如果提供了 at,则使用 srt,如果未提供,则使用 las) 。请注意,不支持adj,并且标签始终居中。有关详细信息,请参阅par

首次绘制绘图时绘制刻度线的轴刻度上的数字位置(请参阅“详细信息”)。

调用此函数通常是因为它的副作用,即向已存在的绘图添加一个轴。

例子

require(stats) # for rnorm
plot(1:4, rnorm(4), axes = FALSE)
axis(1, 1:4, LETTERS[1:4])
axis(2)
box() #- to make it look "as usual"

plot(1:7, rnorm(7), main = "axis() examples",
     type = "s", xaxt = "n", frame.plot = FALSE, col = "red")
axis(1, 1:7, LETTERS[1:7], col.axis = "blue")
# unusual options:
axis(4, col = "violet", col.axis = "dark violet", lwd = 2)
axis(3, col = "gold", lty = 2, lwd = 0.5)

# one way to have a custom x axis
plot(1:10, xaxt = "n")
axis(1, xaxp = c(2, 9, 7))

## Changing default gap between labels:
plot(0:100, type="n", axes=FALSE, ann=FALSE)
title(quote("axis(1, .., gap.axis = f)," ~~ f >= 0))
axis(2, at = 5*(0:20), las = 1, gap.axis = 1/4)
gaps <- c(4, 2, 1, 1/2, 1/4, 0.1, 0)
chG <- paste0(ifelse(gaps == 1, "default:  ", ""),
              "gap.axis=", formatC(gaps))
jj <- seq_along(gaps)
linG <- -2.5*(jj-1)
for(j in jj) {
    isD <- gaps[j] == 1 # is default
    axis (1, at=5*(0:20), gap.axis = gaps[j], padj=-1, line = linG[j],
          col.axis = if(isD) "forest green" else 1, font.axis= 1+isD)
}
mtext(chG, side=1, padj=-1, line = linG -1/2, cex=3/4,
      col = ifelse(gaps == 1, "forest green", "blue3"))
## now shrink the window (in x- and y-direction) and observe the axis labels drawn

参考

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

也可以看看

Axis 用于通用接口。

axTicks 返回 at = NULL 对应的轴刻度位置; pretty 对于计算漂亮的刻度坐标更加灵活,并且不依赖(也不适应)所使用的坐标系。

par 中记录了几个影响外观的图形参数。

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Add an Axis to a Plot。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。