[Rd] feature request: additional hook in plot.new()

Simon Urbanek simon.urbanek at r-project.org
Sun Jan 23 21:23:23 CET 2011


On Jan 23, 2011, at 10:44 AM, Tony Plate wrote:

> Request: An additional hook in plot.new() that is called prior to the call to .Internal(plot.new()).
> Reason: To allow the hook to set up or modify a graphics device that the new plot will appear in.
> 
> The code change needed for this is simple - just 4 new lines of R code in src/library/graphics/R/plot.R:plot.new()
> 
> Current definition of plot.new() in src/library/graphics/R/plot.R:
> 
> plot.new <- function()
> {
>    .Internal(plot.new())
>    for(fun in getHook("plot.new")) {
>        if(is.character(fun)) fun <- get(fun)
>        try(fun())
>    }
>    invisible()
> }
> 
> New definition of plot.new() in src/library/graphics/R/plot.R:
> 
> plot.new <- function()
> {
>    for(fun in getHook("plot.prenew")) {
>        if(is.character(fun)) fun <- get(fun)
>        try(fun())
>    }
>    .Internal(plot.new())
>    for(fun in getHook("plot.new")) {
>        if(is.character(fun)) fun <- get(fun)
>        try(fun())
>    }
>    invisible()
> }
> 
> In src/library/graphics/man/frame.Rd after the existing sentence beginning "There is a hook..." in the DETAILS section, the following sentence could be added:
> 
> "There is another hook called \code{"plot.prenew"} which is called before advancing the frame.  This hook can be used to create a new plot "
> 
> The name of the hook is not very important -- I've suggested "plot.prenew" here.  Another possibility could be "plot.new0".
> 
> More detail on the reason:
> 
> In a tabbed graphics widget (https://r-forge.r-project.org/projects/tabbedplots/ ), having this hook would enable it to operate in a mode where a new tab is automatically created for each new plot.
> 

Just note on the latter: I would expect this to be usually better handled by the device/UI as you will be in conflict with things like plot history, already supported tabbed devices etc. Do you have a use case where the above has any benefits over separate devices in tabs? (The website has little detail so I'm just guessing what you're up to ..).

Cheers,
Simon



More information about the R-devel mailing list