Interpolation function

This function currently implements piecewise linear interpolation (=barycentric interpolation).

math, dplot
interp(x, y = NULL, z, xo = seq(min(x), max(x), length = nx),
       yo = seq(min(y), max(y), length = ny),
       linear = (method == "linear"), extrap = FALSE,
       duplicate = "error", dupfun = NULL,
       nx = 40, ny = 40, input="points", output = "grid",
       method = "linear", deltri = "shull")

vector of \(x\)-coordinates of data points or a SpatialPointsDataFrame object. Missing values are not accepted.


vector of \(y\)-coordinates of data points. Missing values are not accepted.

If left as NULL indicates that x should be a SpatialPointsDataFrame and z names the variable of interest in this dataframe.


vector of \(z\)-values at data points or a character variable naming the variable of interest in the SpatialPointsDataFrame x.

Missing values are not accepted.

x, y, and z must be the same length (execpt if x is a SpatialPointsDataFrame) and may contain no fewer than four points. The points of x and y should not be collinear, i.e, they should not fall on the same line (two vectors x and y such that y = ax + b for some a, b will not produce menaningful results).

interp is meant for cases in which you have \(x\), \(y\) values scattered over a plane and a \(z\) value for each. If, instead, you are trying to evaluate a mathematical function, or get a graphical interpretation of relationships that can be described by a polynomial, try outer.


If output="grid" (default): sequence of \(x\) locations for rectangular output grid, defaults to nx points between min(x) and max(x).

If output="points": vector of \(x\) locations for output points.


If output="grid" (default): sequence of \(y\) locations for rectangular output grid, defaults to ny points between min(y) and max(y).

If output="points": vector of \(y\) locations for output points. In this case it has to be same length as xo.


text, possible values are "grid" (not yet implemented) and "points" (default).

This is used to distinguish between regular and irregular gridded data.


text, possible values are "grid" (=default) and "points".

If "grid" is choosen then xo and yo are interpreted as vectors spanning a rectangular grid of points \((xo[i],yo[j])\), \(i=1,...,nx\), \(j=1,...,ny\). This default behaviour matches how akima::interp works.

In the case of "points" xo and yo have to be of same length and are taken as possibly irregular spaced output points \((xo[i],yo[i])\), \(i=1,...,no\) with no=length(xo). nx and ny are ignored in this case. This case is meant as replacement for the pointwise interpolation done by akima::interpp. If the input x is a SpatialPointsDataFrame and output="points" then xo has to be a SpatialPointsDataFrame, yo will be ignored.


logical, only for backward compatibility with akima::interp, indicates if piecewise linear interpolation or Akima splines should be used. Warning: in this release only linear=TRUE is implemented!

Please use the new method argument instead!


text, possible methods are (currently only, more is under developement) "linear" (piecewise linear interpolation within the triangles of the Delauney triangulation, also referred to as barycentric interpolation based on barycentric coordinates).

This replaces the old linear argument of akima::interp.


logical, indicates if extrapolation outside the convex hull is intended, will not work for piecewise linear interpolation!


character string indicating how to handle duplicate data points. Possible values are


produces an error message,


remove duplicate z values,


calculate mean , median or user defined function (dupfun) of duplicate \(z\) values.


a function, applied to duplicate points if duplicate= "user".


dimension of output grid in x direction


dimension of output grid in y direction


triangulation method used, this argument will later be moved into a control set together with others related to the spline interpolation! Possible values are "shull" (default, sweep hull algorithm) and "deldir" (uses packagedeldir).


a list with 3 components:


If output="grid": vectors of \(x\)- and \(y\)-coordinates of output grid, the same as the input argument xo, or yo, if present. Otherwise, their default, a vector 40 points evenly spaced over the range of the input x and y.

If output="points": vectors of \(x\)- and \(y\)-coordinates of output points as given by xo and yo.


If output="grid": matrix of fitted \(z\)-values. The value z[i,j] is computed at the point \((xo[i], yo[j])\). z has dimensions length(xo) times length(yo).

If output="points": a vector with the calculated z values for the output points as given by xo and yo.

If the input was a SpatialPointsDataFrame a SpatialPixelsDataFrame is returned for output="grid" and a SpatialPointsDataFrame for output="points".


Moebius, A. F. (1827) Der barymetrische Calcul. Verlag v. Johann Ambrosius Barth, Leipzig,

Franke, R., (1979). A critical comparison of some methods for interpolation of scattered data. Tech. Rep. NPS-53-79-003, Dept. of Mathematics, Naval Postgraduate School, Monterey, Calif.

See Also


  • interp
### Use all datasets from Franke, 1979:
for(i in 1:5)
    for(j in 1:3){
        FR <-,j,franke)
        IL <- with(FR, interp(x,y,z,method="linear"))
# }
Documentation reproduced from package interp, version 1.0-33, License: GPL (>= 2)

Community examples

Looks like there are no examples yet.