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


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。