# [R] image of expand.grid

Uwe Ligges ligges at statistik.uni-dortmund.de
Mon May 5 10:00:09 CEST 2003

```juli g. pausas wrote:
>  Uwe Ligges wrote:
>
>> juli g. pausas wrote:
>>
>>> Hi all,
>>> It is not clear to me why this cannot be ploted with image. Any help?
>>>
>>>  > g <- data.frame(expand.grid(x= 1:5, y= 1:5), z= rnorm(25))
>>>  > image(g)
>>> Error in image.default(g) : increasing x and y values expected
>>
>>
>>
>> The error message states: "increasing x and y values expected".
>> image() is really clever and you don't need expand.grid() in this case
>> (in principle, image() does it itself):
>>
>>  g <- list(x = 1:5, y = 1:5, z = matrix(rnorm(25), 5))
>>  image(g)
>
>
>
> Uwe,
> I undertand that if z is a matrix, then x and y are not needed:
>    image( matrix(rnorm(25), 5) )
>
> My question was, if I've got 'x', 'y' and 'z', where x and y are the
> coordinates of the z values, can I use image to ploted them?
> Perhaps a more realistic example would be, when the grid is incomplete
> such as in h:
>
> g <- data.frame(expand.grid(x= 1:5, y= 1:5), z= rnorm(25))
> h <- g[sample(nrow(g), 20), ]    # remove some cells
>
>  From the help pages I thought it was possible:
>
> Arguments:
>     x,y: locations of grid lines at which the values in `z' are
>          measured.  These must be in (strictly) ascending order. By ...
>
> this is why my suggestion was a list with x, y, and z of the same length
> (coordinates and z-values). But I suppose I misunderstood the help, and
> it is  not possible to use image() in this case, even with the complete
> coordinates (g).
> I have found an alternative way,  using as.image() in the 'fields' library:
>
> image(as.image(h\$z, data.frame(x= h\$x, y= h\$y), ncol=5, nrow=5))
>
> cheers
> Juli

From ?image:

z  a matrix containing .....

So z must be a matrix, even if used as a component of a list.
NAs are allowed in z.

Uwe Ligges

```