axis | R Documentation |
Description
Adds an axis to the current plot, allowing thespecification of the side, position, labels, and other options.
Usage
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, ...)
Arguments
side | an integer specifying which side of the plot the axis isto be drawn on. The axis is placed as follows: 1=below,2=left, 3=above and 4=right. |
at | the points at which tick-marks are to be drawn. Non-finite(infinite, |
labels | this can either be a logical value specifying whether(numerical) annotations are to be made at the tickmarks, or acharacter or expression vector of labels to be placed at thetickpoints. (Other objects are coerced by |
tick | a logical value specifying whether tickmarks and an axis lineshould be drawn. |
line | the number of lines into the margin at which the axis linewill be drawn, if not |
pos | the coordinate at which the axis line is to be drawn:if not |
outer | a logical value indicating whether the axis should bedrawn in the outer plot margin, rather than the standard plotmargin. |
font | font for text. Defaults to |
lty | line type for both the axis line and the tick marks. |
lwd, lwd.ticks | line widths for the axis line and the tickmarks. Zero or negative values will suppress the line or ticks. |
col, col.ticks | colors for the axis line and the tick marksrespectively. |
hadj | adjustment (see |
padj | adjustment for each tick label perpendicular to thereading direction. For labels parallel to the axes, If |
gap.axis | an optional (typically non-negative) numeric factor tobe multiplied with the size of an ‘m’ to determine theminimal gap between labels that are drawn, see ‘Details’.The default, 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
|
... | other graphical parameters may also be passed asarguments to this function, particularly, Parameters Note that |
Details
The axis line is drawn from the lowest to the highest value ofat
, but will be clipped at the plot region. By default, onlyticks which are drawn from points within the plot region (up to atolerance for rounding error) are plotted, but the ticks and theirlabels may well extend outside the plot region. Use xpd = TRUE
or xpd = NA
to allow axes to extend further.
When at = NULL
, pretty tick mark locations are computed internally(the same way axTicks(side)
would) frompar("xaxp")
or "yaxp"
andpar("xlog")
(or "ylog"
). Note that theselocations may change if an on-screen plot is resized (for example, ifthe plot
argument asp
(see plot.window
) is set.)
If labels
is not specified, the numeric values supplied orcalculated for at
are converted to character strings as if theywere a numeric vector printed by print.default(digits = 7)
.
The code tries hard not to draw overlapping tick labels, and so willomit labels where they would abut or overlap previously drawn labels.This can result in, for example, every other tick being labelled.The ticks are drawn left to right or bottom to top, and space atleast the size of an ‘m’, multiplied by gap.axis
,is left between labels. In previous R versions, this applied onlyfor labels written parallel to the axis direction, hence notfor e.g., las = 2
. Using gap.axis = -1
restores that(buggy) previous behaviour (in the perpendicular case).
If either line
or pos
is set, they (rather thanpar("mgp")[3]
) determine the position of the axis line and tickmarks, and the tick labels are placed par("mgp")[2]
furtherlines into (or towards for pos
) the margin.
Several of the graphics parameters affect the way axes are drawn. Thevertical (for sides 1 and 3) positions of the axis and the tick labelsare controlled by mgp[2:3]
and mex
, the size anddirection of the ticks is controlled by tck
and tcl
andthe appearance of the tick labels by cex.axis
, col.axis
and font.axis
with orientation controlled by las
(butnot srt
, unlike S which uses srt
if at
issupplied and las
if it is not). Note that adj
is notsupported and labels are always centered. See par
for details.
Value
The numeric locations on the axis scale at which tick marks were drawnwhen the plot was first drawn (see ‘Details’).
This function is usually invoked for its side effect, which is to addan axis to an already existing plot.
References
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)The New S Language.Wadsworth & Brooks/Cole.
See Also
Axis
for a generic interface.
axTicks
returns the axis tick locationscorresponding to at = NULL
; pretty
is more flexiblefor computing pretty tick coordinates and does not depend on(nor adapt to) the coordinate system in use.
Several graphics parameters affecting the appearance are documentedin par
.
Examples
require(stats) # for rnormplot(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 axisplot(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