Add Straight Lines to a Plot
This function adds one or more straight lines through the current plot.
abline(a = NULL, b = NULL, h = NULL, v = NULL, reg = NULL, coef = NULL, untf = FALSE, ...)
- a, b
- the intercept and slope, single values.
- logical asking whether to untransform. See ‘Details’.
- the y-value(s) for horizontal line(s).
- the x-value(s) for vertical line(s).
- a vector of length two giving the intercept and slope.
- an object with a
coefmethod. See ‘Details’.
- graphical parameters such as
lwd(possibly as vectors: see ‘Details’) and
xpdand the line characteristics
Typical usages are
abline(a, b, untf = FALSE, \dots) abline(h =, untf = FALSE, \dots) abline(v =, untf = FALSE, \dots) abline(coef =, untf = FALSE, \dots) abline(reg =, untf = FALSE, \dots)The first form specifies the line in intercept/slope form (alternatively
acan be specified on its own and is taken to contain the slope and intercept in vector form). The
v=forms draw horizontal and vertical lines at the specified coordinates. The
coefform specifies the line by a vector containing the slope and intercept.
regis a regression object with a
coefmethod. If this returns a vector of length 1 then the value is taken to be the slope of a line through the origin, otherwise, the first 2 values are taken to be the intercept and slope. If
untfis true, and one or both axes are log-transformed, then a curve is drawn corresponding to a line in original coordinates, otherwise a line is drawn in the transformed coordinate system. The
vparameters always refer to original coordinates. The graphical parameters
lwdcan be specified; see
parfor details. For the
v=usages they can be vectors of length greater than one, recycled as necessary. Specifying an
xpdargument for clipping overrides the global
par("xpd")setting used otherwise.
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.
## Setup up coordinate system (with x == y aspect ratio): plot(c(-2,3), c(-1,5), type = "n", xlab = "x", ylab = "y", asp = 1) ## the x- and y-axis, and an integer grid abline(h = 0, v = 0, col = "gray60") text(1,0, "abline( h = 0 )", col = "gray60", adj = c(0, -.1)) abline(h = -1:5, v = -2:3, col = "lightgray", lty = 3) abline(a = 1, b = 2, col = 2) text(1,3, "abline( 1, 2 )", col = 2, adj = c(-.1, -.1)) ## Simple Regression Lines: require(stats) sale5 <- c(6, 4, 9, 7, 6, 12, 8, 10, 9, 13) plot(sale5) abline(lsfit(1:10, sale5)) abline(lsfit(1:10, sale5, intercept = FALSE), col = 4) # less fitting z <- lm(dist ~ speed, data = cars) plot(cars) abline(z) # equivalent to abline(reg = z) or abline(coef = coef(z)) ## trivial intercept model abline(mC <- lm(dist ~ 1, data = cars)) ## the same as abline(a = coef(mC), b = 0, col = "blue")