[R] question on image() function?

Duncan Murdoch murdoch at stats.uwo.ca
Thu Nov 8 19:13:18 CET 2007

On 11/8/2007 11:51 AM, zhijie zhang wrote:
> Dear friends,
>   My dataset is like the following:
>          x                y              mcpvalue
> 0.4603578     0.6247629       1.001
> 0.4603715     0.6247788        1.001
> 0.4603852     0.6247948       1.001
> 0.4110561     0.5664841       0.995
>  The x and y variables are unsorted.
>  I use the function image(x,y,mcpvalue) to generate a plot, but the error
> is that "increasing 'x' and 'y' values are expected". So i use
>    image(x=seq(min(x),max(x)), y=seq(min(y),max(y)),z=as.matrix
> (result$mcpvalue))
> to do it again, but there is still an error "dimensions of z are not
> length(x)(-1) times length(y)(-1)".
>   Anybody can show me how to use the image() correctly with the original x/y
> unsorted?

You can't, it doesn't know how to handle that kind of data.

image() is designed to display a matrix of values.  The x and y values 
tell it where to put the rows and columns of the matrix.

You have a set of points.  You need to fit a surface to them, evaluate 
the surface on a grid, and pass that to image().

There are many ways to do that; the akima package has the interp() 
function for instance.

Duncan Murdoch

More information about the R-help mailing list