[R] locator

tom wright tom at maladmin.com
Fri Oct 21 18:14:22 CEST 2005


Perfect, thankyou

On Fri, 2005-21-10 at 15:46 -0400, Duncan Murdoch wrote:
> On 10/21/2005 11:23 AM, tom wright wrote:
> > I'm trying to use the locator function on a drawing area with multiple
> > graphs par(mfrow=c(1,2))
> > Is it possible to identify which graph has been clicked?
> 
> locator() will return coordinates based on the active graph (typically 
> the last one you drew), so you can work it out from that.
> That is, convert from user coordinates to screen coordinates, and then 
> work out the position from there:
> 
> getcell <- function(pts = locator()) {
>    usr <- par("usr")
>    plt <- par("plt")
>    mfg <- par("mfg")
> 
>    x <- pts$x
>    y <- pts$y
> 
>    # convert to 0-1 plot coordinates
>    px <- (x-usr[1])/(usr[2]-usr[1])
>    py <- (y-usr[3])/(usr[4]-usr[3])
> 
>    # convert to 0-1 frame coordinates
>    fx <- plt[1] + px*(plt[2]-plt[1])
>    fy <- plt[3] + py*(plt[4]-plt[3])
> 
>    # convert to a relative cell position
>    cx <- floor(fx)
>    cy <- floor(fy)
> 
>    # return the absolute cell position
>    list(row = -cy+mfg[1],col = cx+mfg[2])
> }
>




More information about the R-help mailing list