This function adds one or more straight lines through the current plot.
1 2 
a, b 
the intercept and slope, single values. 
untf 
logical asking whether to untransform. See ‘Details’. 
h 
the yvalue(s) for horizontal line(s). 
v 
the xvalue(s) for vertical line(s). 
coef 
a vector of length two giving the intercept and slope. 
reg 
an object with a 
... 
graphical parameters such as

Typical usages are
1 2 3 4 5 
The first form specifies the line in intercept/slope form
(alternatively a
can be specified on its own and is taken to
contain the slope and intercept in vector form).
The h=
and v=
forms draw horizontal and vertical lines
at the specified coordinates.
The coef
form specifies the line by a vector containing the
slope and intercept.
reg
is a regression object with a coef
method.
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 untf
is true, and one or both axes are logtransformed, then
a curve is drawn corresponding to a line in original coordinates,
otherwise a line is drawn in the transformed coordinate system. The
h
and v
parameters always refer to original coordinates.
The graphical parameters col
, lty
and lwd
can be specified; see par
for details. For the
h=
and v=
usages they can be vectors of length greater
than one, recycled as necessary.
Specifying an xpd
argument 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.
lines
and segments
for connected and
arbitrary lines given by their endpoints.
par
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24  ## 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 yaxis, 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")

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.
All documentation is copyright its authors; we didn't write any of that.