grid.locator {grid} | R Documentation |
Capture a Mouse Click
Description
Allows the user to click the mouse once within the current graphics device and returns the location of the mouse click within the current viewport, in the specified coordinate system.
Usage
grid.locator(unit = "native")
Arguments
unit |
The coordinate system in which to return the location
of the mouse click.
See the |
Details
This function is modal (like the graphics package
function locator
) so
the command line and graphics drawing is blocked until
the use has clicked the mouse in the current device.
Value
A unit object representing the location of the mouse click within the current viewport, in the specified coordinate system.
If the user did not click mouse button 1, the function
(invisibly) returns NULL
.
Author(s)
Paul Murrell
See Also
viewport
, unit
,
locator
in package graphics, and for an application
see trellis.focus
and
panel.identify
in package
lattice.
Examples
if (dev.interactive()) {
## Need to write a more sophisticated unit as.character method
unittrim <- function(unit) {
sub("^([0-9]+|[0-9]+[.][0-9])[0-9]*", "\\1", as.character(unit))
}
do.click <- function(unit) {
click.locn <- grid.locator(unit)
grid.segments(unit.c(click.locn$x, unit(0, "npc")),
unit.c(unit(0, "npc"), click.locn$y),
click.locn$x, click.locn$y,
gp=gpar(lty="dashed", col="grey"))
grid.points(click.locn$x, click.locn$y, pch=16, size=unit(1, "mm"))
clickx <- unittrim(click.locn$x)
clicky <- unittrim(click.locn$y)
grid.text(paste0("(", clickx, ", ", clicky, ")"),
click.locn$x + unit(2, "mm"), click.locn$y,
just="left")
}
grid.newpage() # (empty slate)
## device
do.click("inches")
Sys.sleep(1)
pushViewport(viewport(width=0.5, height=0.5,
xscale=c(0, 100), yscale=c(0, 10)))
grid.rect()
grid.xaxis()
grid.yaxis()
do.click("native")
popViewport()
}