[R] Is it possible to draw with function "image.asc " and show a legend strip in the same window?
David Winsemius
dwinsemius at comcast.net
Tue Nov 20 19:47:56 CET 2012
On Nov 20, 2012, at 3:15 AM, riodementa wrote:
> I want to represent a Raster map of class "asc", and in the same window a
> list of points with the funcion points(x,y)..
>
> I considered two options:
> 1. With image.plot(map) and then use points(x,y).
> It works, and the points are in the correct place, but when I maximize
> the plot the points are moved to a wrong place.
>
> My second option was using image.asc(map) and then use points(x,y) and all
> works! I can minimize, maximize....
> But with this option, for me is not possible to show a legend strip in the
> right side of the window.
>
> Any suggestion?
>
> Yo can understand my problem using this:
> CASE 1
> file1 <- paste(system.file(package =
> "adehabitat"),"ascfiles/elevation.asc", sep = "/")
> map<-import.asc(file1)
> image.plot(map,col=terrain.colors(100))
> points(700440,3160561)
>
> CASE2
> image.asc(map,col=terrain.colors(100))
> points(700440,3160561)
You will notice that the image function in base r graphics uses a [0,1] x [0,1] coordinate system.
x <- y <- seq(-4*pi, 4*pi, len=27)
r <- sqrt(outer(x^2, y^2, "+"))
image(z = z <- cos(r^2)*exp(-r/6), col=gray((0:32)/32)) # NOT the same plotted range as input.
points(0,0) # appears in lower-most, left-most cell
points(0.5,0.5, col= "red") # appears in center
If the image.asc function ( in whatever unnamed package it resides in) uses the same transformation strategy, then you will need to transform your point values, using the values of the x and y ranges of your input data.
--
David Winsemius, MD
Alameda, CA, USA
More information about the R-help
mailing list