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 graphical settings.
2. on.exit() is preferred in case an error is encountered and the function never reaches the par(opar) call. Cheers, Bert Bert Gunter Genentech Nonclinical Statistics -----Original Message----- From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On Behalf Of David Winsemius Sent: Friday, May 14, 2010 3:20 PM To: Duncan Murdoch Cc: r-help@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... >> par(opar) >> >> 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: par(op) # 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 both alternatives. > >> 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? -- David. > > 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), >> heights=c(.75,2.25)) >> 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) >> par(opar) >> >> > David Winsemius, MD West Hartford, CT ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.