Scatter Plot Smoothing

The lowess function performs the computations for the LOWESS smoother (see the reference below). lowess returns a an object containing components x and y which give the coordinates of the smooth. The smooth can then be added to a plot of the original points with the function lines.

Alternatively, plot can be called directly on the object returned from lowess and the 'lowess' method for plot will generate a scatterplot of the original data with a lowess line superimposed.

Finally, the plotLowess function both calculates the lowess smooth and plots the original data with a lowess smooth.

lowess(x, ...)

# S3 method for default lowess(x, y=NULL, f=2/3, iter=3L, delta=0.01 * diff(range(x)), ...)

# S3 method for formula lowess(formula,data=parent.frame(), ..., subset, f=2/3, iter=3L, delta=.01*diff(range(mf[-response])))

# S3 method for lowess plot(x, y, ..., col.lowess="red", lty.lowess=2)

plotLowess(formula, data=parent.frame(), ..., subset=parent.frame(), col.lowess="red", lty.lowess=2 )


formula providing a single dependent variable (y) and an single independent variable (x) to use as coordinates in the scatter plot.


a data.frame (or list) from which the variables in `formula' should be taken.


an optional vector specifying a subset of observations to be used in the fitting process.

x, y

vectors giving the coordinates of the points in the scatter plot. Alternatively a single plotting structure can be specified.


the smoother span. This gives the proportion of points in the plot which influence the smooth at each value. Larger values give more smoothness.


the number of robustifying iterations which should be performed. Using smaller values of iter will make lowess run faster.


values of x which lie within delta of each other replaced by a single value in the output from lowess.


parameters for methods.

col.lowess, lty.lowess

color and line type for plotted line


Cleveland, W. S. (1979) Robust locally weighted regression and smoothing scatterplots. J. Amer. Statist. Assoc. 74, 829--836.

Cleveland, W. S. (1981) LOWESS: A program for smoothing scatterplots by robust locally weighted regression. The American Statistician, 35, 54.

See Also

loess (in package modreg), a newer formula based version of lowess (with different defaults!).

  • lowess
  • lowess.default
  • lowess.formula
  • plot.lowess
  • plotLowess
  • lowess

# x,y method
plot(cars$speed, cars$dist, main="lowess(cars)")
lines(lowess(cars$speed, cars$dist), col=2)
lines(lowess(cars$speed, cars$dist, f=.2), col=3)
legend(5, 120, c(paste("f=", c("2/3", ".2"))), lty=1, col=2:3)

# formula method: plot, then calculate the lowess smoother,
#                 then add smooth to the plot
plot(dist ~ speed, data=cars, main="lowess(cars)")
lines(lowess(dist ~ speed, data=cars), col=2, lty=2)
lines(lowess(dist ~ speed, data=cars, f=.2), col=3) # smaller bandwith
legend(5, 120, c(paste("f=", c("2/3", ".2"))), lty=1, col=2:3)

# formula method: calculate lowess() smoother, then call plot()
#                  on the lowess object
lw <- lowess(dist ~ speed, data=cars)
plot(lw, main="lowess(cars)"  )

# formula method: calculate and plot in a single command
plotLowess(dist ~ speed, data=cars, main="lowess(cars)")

# }
# }
<!-- % dontshow -->
# }
# }
Documentation reproduced from package gplots, version 3.0.1, License: GPL-2

Community examples

Looks like there are no examples yet.