[R] Are there better ways to save and restore par() settings
gunter.berton at gene.com
Sat May 15 02:08:45 CEST 2010
Perhaps a bit of additional explanation might help.
1. This is obviously for functions that others might use, as one is free to
inflict punishment on oneself. The idea is not to alter the innocent user's
2. on.exit() is preferred in case an error is encountered and the function
never reaches the par(opar) call.
Genentech Nonclinical Statistics
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On
Behalf Of David Winsemius
Sent: Friday, May 14, 2010 3:20 PM
To: Duncan Murdoch
Cc: r-help at r-project.org Help
Subject: Re: [R] Are there better ways to save and restore par() settings
On May 14, 2010, at 5:45 PM, Duncan Murdoch wrote:
> On 14/05/2010 3:51 PM, David Winsemius wrote:
>> Some of the help page examples use the form:
>> opar <- par(<something>)
>> .....plotting activities...
>> This seems to "work" well, yet I have read in some places
> Please include commented, retrievalbe citations for "some places".
In the examples from help(par) I see:
p <- par(mfrow = c(2, 2),
# 2 x 2 pictures on one plot pty = "s")
# square plotting region,
# independent of device size
## At end of plotting, reset to previous settings:
# Alternatively, op <- par(no.readonly = TRUE)
# the whole list of settable par's.
## do lots of plotting and par(.) calls, then reset: par(op)
## Note this is not in general good practice
Was it only with the use of the "no.read.only" parameter that one is
supposed to avoid the form I illustrated. I had assumed it applied to
>> that it is not the preferred method to keep you parameters from
>> getting corrupted. What is the preferred method?
> The above, with the restore wrapped in on.exit(), as your sources
> should have said.
Perhaps it was implied in a manner to which I was not properly
receptive. The only place I see on.exit() on the par help page is in
the final example. I do not see a link to that function in the that
help page, and I had read it but assumed it was related to "exit"-ing
an R session. On visiting the on.exit help page for the first time in
my life, I see that its primary use is with graphics device calls. So
we are being advised to write that wrapper function each time we might
be making a par-changing plot?
> Duncan Murdoch
>> A worked example from a recent posting with minor additions:
>> opar <- par(mar=c(3,5,0,5))
>> layout(rbind(c(4,1,1,5), c(2,2,3,3)), widths=c(1,1,1,1),
>> barplot(0,0, axes=FALSE)
>> legend(x=0.5, y=0, legend=c("Example 1", "Example 2"),
>> pch=c(1,2), cex=1.5, xjust=1, yjust=0.5, bty="n")
>> plot(1:10,1:10, pch=1)
>> plot(1:20,1:20, pch=2)
David Winsemius, MD
West Hartford, CT
R-help at r-project.org mailing list
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
More information about the R-help