[R] Plotting a raster image

David Winsemius dwinsemius at comcast.net
Tue May 8 02:14:32 CEST 2012


On May 7, 2012, at 6:15 PM, stat curio wrote:

> Hello,
>
> I have a data frame which looks like
>
>> head(d)
>  a1 a2        n  j     col
> 1  1  1 88341002 11 #E7E7E7
> 2  1  2 25094882 11 #E7E7E7
> 3  1  3 16916246 11 #E7E7E7
> 4  1  4 14289229 11 #E7E7E7
> 5  1  5 11945929 11 #E7E7E7
> 6  1  6  8401235 11 #E7E7E7
>
> The values in 'j' run from 1 to 11. I would like to plot the point  
> (a1,a2)
> with color given by j
>
> I tried
>
> mi <-  
> image(d[,"a1"],d[,"a2"],d[,"j"],col=mycols(length(f)),useRaster=TRUE)
>
> (where mycols is from  
> colorRampPalette(c("#000000","#FFFFFF"),bias=1.5)
>
> However, i got the following error:
>
> Error in image.default(d[, "a1"], d[, "a2"], d[, "j"], col =
> mycols(length(f)),  :
>  increasing 'x' and 'y' values expected
>
>
> What am i doing wrong here? I have a million points and so would  
> like to
> write to a png or jpeg file.

It is difficult to tell. We do not have either dput(head(d)) or str(d)  
so some of the potential newbie R potholes remain over the horizon of  
our sight. The z-argument is supposed to be a matrix while x and y are  
supposed to be the locations of the grid, so perhaps you need to call  
image() like:

?image

image(x=unique(d[,"a1"]),
        y=unique(d[,"a2"]),
         z=matrix( d[,"j"], nrow=length( unique(d[,"a1"]) ),
                            ncol=length( unique(d[,"a2"]) )
                   ),
              ... <other-args>...
                      )

> 	[[alternative HTML version deleted]]

You can thank us by starting to post in plain text.

> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
... and
> and provide commented, minimal, self-contained, reproducible code.

-- 
David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list