This thread explains how to create a matrix from x/y/z coordinates using the akima package but I'd rather not use a new package. After all, you can do the same thing in one command in gnuplot: gnuplot interpolation.
The image plot using a matrix of data points in the above gnuplot thread can be achieved in R with a call to the image() command.
What about a surface plot, how can we interpolate the x/y/z points to generate a 2d heatmap?