Package 'clickableImageMap'

Title: Implement 'tableGrob' Object as a Clickable Image Map
Description: Implement 'tableGrob' object as a clickable image map. The 'clickableImageMap' package is designed to be more convenient and more configurable than the edit() function. Limitations that I have encountered with edit() are cannot control (1) positioning (2) size (3) appearance and formatting of fonts In contrast, when the table is implemented as a 'tableGrob', all of these features are controllable. In particular, the 'ggplot2' grid system allows exact positioning of the table relative to other graphics etc.
Authors: Barry Zeeberg [aut, cre]
Maintainer: Barry Zeeberg <[email protected]>
License: GPL (>= 2)
Version: 1.0
Built: 2025-03-11 03:15:10 UTC
Source: https://github.com/cran/clickableImageMap

Help Index


annunciator

Description

post a message in the annunciator grob of gtab

Usage

annunciator(gtab, row, message, name)

Arguments

gtab

return value of gtable_replace_grob()

row

integer the row number of the annunciator grob in gtab

message

character string message to be posted

name

character string value of name field in gtab layout matrix

Value

returns the return value of gtable_add_grob()

Examples

if(interactive()){
load("data/x_rows.RData")
annunciatorRow<-which(names(x_rows)=="annunciatorRow")
load("data/x_gtab.RData")
annunciator(x_gtab,annunciatorRow,"message","annunciator")
}

calibrate

Description

use coordinates of upper left and bottom right of matrix to construct mapping between viewport coordinates and matrix cells

Usage

calibrate(m, rows, pullDownRow)

Arguments

m

matrix

rows

list of row heights in the gtable object

pullDownRow

integer number of the target row in the gtable object

Value

returns a list whose components are matrices representing the upper and lower coordinates of the row and column cells

Examples

if(interactive()){
m<-matrix(1:20 * .05,nrow=2,ncol=10)
load("data/x_rows.RData")
pullDownRow<-which(names(x_rows)=="pullDownRow")
load("data/x_m.RData")
cal<-calibrate(x_m,x_rows,pullDownRow)
}

clickableImageMapDemo

Description

demo to illustrate how to implement calibrate() and grid.locator() for a numerical matrix. This is just a stub to be replaced by the user's actual program.

Usage

clickableImageMapDemo(
  n = 3,
  bounds = list(xmin = 0.534, xmax = 0.553, ymin = 0.057, ymax = 0.067),
  sleepTime = 0.5
)

Arguments

n

integer number of values to be edited in matrix m

bounds

list of 4 numerical values xmin, xmax, ymin, ymax

sleepTime

numeric number of seconds to sleep to avoid potential race condition

Details

this package emulates edit() but allows full control over formatting and management of the edited matrix. sleepTime parameter can be set to nonzero (suggest trying sleepTime=0.5) in case a complicated
graphic causes a race condition evidenced by incomplete redrawing of the window. Too large a value
might cause a noticeable annoying delay in redrawing the window.

Value

returns the updated numerical matrix

Examples

if(interactive()){
m<-clickableImageMapDemo(2,bounds=list(xmin=.534,xmax=.553,ymin=.057,ymax=.067))
}

construct_entire_gtab

Description

construct the main gtable into which grobs will be inserted

Usage

construct_entire_gtab(m, rows, message, clickCoord)

Arguments

m

a matrix

rows

numerical vector defining rows for inserting grobs into main gtable

message

character string message to display in annunciator grob of gtable

clickCoord

numerical matrix of 2 columns, each row contains x and y coords of a mouse click

Value

returns a list whose components are

  • m.pullDown component m of return value of pullDown()

  • cal.pullDown return value of calibrate()

  • cal.m return value of calibrate()

  • gtab return value of annunciator()

Examples

if(interactive()){
load("data/x_m.RData")
load("data/x_rows.RData")
load("data/x_clickCoord.RData")
gtab<-construct_entire_gtab(x_m,x_rows,"x_message",x_clickCoord)
}

decode

Description

map the screen coordinates to a cell of a matrix

Usage

decode(y, cal, rcnames)

Arguments

y

parsed return value of grid.locator()

cal

return value of calibrate()

rcnames

Boolean if TRUE matrix has row names and col names

Value

returns an integer vector of the index of a cell in a matrix or returns -1 if rcnames is TRUE and vector y is not within valid range

Examples

if(interactive()){
load("data/x_y.RData")
load("data/x_rcnames.RData")
load("data/x_cal2.RData")
decode(x_y,x_cal2,x_rcnames)
}

defineBounds

Description

use mouse clicks to define bounding box

Usage

defineBounds()

Details

use in conjunction with exitClick()

Value

returns a list of numeric xmin xmax ymin ymax defining screen target for exit

Examples

if(interactive()){
defineBounds()
}

doubleClick

Description

detect a (left) double click (without moving cursor position)

Usage

doubleClick(tol = 0.001)

Arguments

tol

numeric tolerance for detecting same position

Details

I realized this is not very useful, as processing is stopped until 2 clicks are detected

Value

returns TRUE if a double click was detected

Examples

if(interactive()){
doubleClick()
}

exitClick

Description

test position of mouse click to see if user wants to exit

Usage

exitClick(bounds, y)

Arguments

bounds

list of numeric xmin xmax ymin ymax defining screen target for exit

y

numeric vector of x and y cursor position

Details

use in conjunction with defineBounds()

Value

Boolean TRUE if y is within bounds

Examples

if(interactive()){
load("data/x_bounds.RData")
load("data/x_y.RData")
exitClick(x_bounds,x_y)
}

gtable_replace_grob

Description

replace an existing grob (in a row of a gtable) with an updated version

Usage

gtable_replace_grob(gtab, row, new_grob, name)

Arguments

gtab

a gtable object

row

integer target row number within the gtable

new_grob

update grob to insert into gtable

name

character string entry in the "name" field of gtable$layout

Value

returns the updated gtable object

Examples

if(interactive()){
load("data/x_gtab.RData")
load("data/x_tab.RData")
load("data/x_rows.RData")
ptabRow<-which(names(x_rows)=="ptabRow")
gtab<-gtable_replace_grob(x_gtab,ptabRow,x_tab,name="ptab")
}

highlight

Description

invoke highlight() to set highlight font color and size

Usage

highlight(gtab, color, fontsize)

Arguments

gtab

a gtable object

color

character string representing a color

fontsize

integer font size

Value

returns gtab

Examples

if(interactive()){
load("data/x_gtab.RData")
highlight(x_gtab,"red",16)
}

highlightOneCell

Description

highlight one cell of grob matrix in gtab

Usage

highlightOneCell(gtab, row, col, currentPick)

Arguments

gtab

a gtable object

row

integer row number of cell to highlight

col

integer col number of cell to highlight

currentPick

Boolean TRUE if this is the most recently chosen cell and we are to apply special highlighting

Value

returns gtab, a gtable object

Examples

if(interactive()){
load("data/x_mtab.RData")
load("data/x_clickCoord.RData")
highlightOneCell(x_mtab,x_clickCoord[1,"x"],x_clickCoord[1,"y"],FALSE)
}

pullDown

Description

generate and insert a matrix, acting as a pull down menu, into a gtable object

Usage

pullDown(gtab, row, focus)

Arguments

gtab

a gtable object

row

integer target row number within the gtable

focus

Boolean if TRUE add emphasis to matrix cell

Value

returns a list whose components are the generated matrix and the gtable object

Examples

if(interactive()){
load("data/x_gtab.RData")
load("data/x_rows.RData")
pullDownRow<-which(names(x_rows)=="pullDownRow")
message<-"select a new value from the pull down menu: "
pd<-pullDown(x_gtab,pullDownRow,grepl("pull down",message))
}

tabify

Description

adjust the width and height of a matrix to exactly fill the grob

Usage

tabify(m, focus = FALSE, clickCoord = NULL)

Arguments

m

a matrix

focus

Boolean if TRUE add emphasis to matrix cell

clickCoord

param for highlightOneCell()

Value

returns the grob containing the matrix

Examples

if(interactive()){
load("data/x_m.RData")
t<-tabify(x_m,FALSE,NULL)
}

unhighlight

Description

invoke highlight() to set font color and size to default

Usage

unhighlight(gtab)

Arguments

gtab

a gtable object

Value

returns the return value of highlight()

Examples

if(interactive()){
load("data/x_gtab.RData")
unhighlight(x_gtab)
}

clickableImageMap data sets

Description

clickableImageMap data sets

Usage

data(x_bounds)

clickableImageMap data sets

Description

clickableImageMap data sets

Usage

data(x_cal.m)

clickableImageMap data sets

Description

clickableImageMap data sets

Usage

data(x_cal.pullDown)

clickableImageMap data sets

Description

clickableImageMap data sets

Usage

data(x_cal2)

clickableImageMap data sets

Description

clickableImageMap data sets

Usage

data(x_clickCoord)

clickableImageMap data sets

Description

clickableImageMap data sets

Usage

data(x_gtab)

clickableImageMap data sets

Description

clickableImageMap data sets

Usage

data(x_l)

clickableImageMap data sets

Description

clickableImageMap data sets

Usage

data(x_m)

clickableImageMap data sets

Description

clickableImageMap data sets

Usage

data(x_mtab)

clickableImageMap data sets

Description

clickableImageMap data sets

Usage

data(x_mtab2)

clickableImageMap data sets

Description

clickableImageMap data sets

Usage

data(x_rcnames)

clickableImageMap data sets

Description

clickableImageMap data sets

Usage

data(x_rows)

clickableImageMap data sets

Description

clickableImageMap data sets

Usage

data(x_tab)

clickableImageMap data sets

Description

clickableImageMap data sets

Usage

data(x_y)

zlocator

Description

wrapper to perform and decode grid.locator()

Usage

zlocator(cal, rcnames, bounds)

Arguments

cal

return value of calibrate()

rcnames

parameter passed to decode()

bounds

parameter passed to exitClick()

Details

keeps looping until a valid click is detected

Value

returns the return value of decode()

Examples

if(interactive()){
load("data/x_cal.m.RData")
load("data/x_rcnames.RData")
load("data/x_bounds.RData")
zlocator(x_cal.m,x_rcnames,x_bounds)
}