Re: [Rd] pairs, par

From: Oliver Soong <osoong_at_bren.ucsb.edu>
Date: Mon, 29 Oct 2007 10:54:18 -0700

I dug around in pairs, and I think it has something to do with the on.exit(par(opar)) bit:

f <- function() {

	opar <- par(mfrow = c(2, 2), mar = rep(0.5, 4), oma = rep(4, 4))
	on.exit(par(opar))
	for(i in 1:4) plot(0:1, 0:1)
	par(c("mfg", "omd", "fig", "plt", "usr"))
	print(opar)

}
f()
par(xpd = NA)
par(c("omd", "fig", "plt", "usr"))
points(0 - 0.01 * 1:100, 0 - 0.01 * 1:100)
points(0 - 0.01 * 1:100, 1 + 0.01 * 1:100)
points(1 + 0.01 * 1:100, 0 - 0.01 * 1:100)
points(1 + 0.01 * 1:100, 1 + 0.01 * 1:100)

My guess is that there are 2 sets of graphical parameters, the ones stored in par and the ones used by the plotting functions. Before par(opar) gets called, the two are synchronized. When par(opar) gets called, we somehow set new values for par without changing the ones used by the plotting functions, and the data used by points becomes out of sync with the par information.

This is reflected in this much simpler example:

x11()
par(c("omd", "fig", "plt", "usr"))
points(0, 0)

Again, par is defined, but this time the data used by the plotting functions has not been set, and an error occurs.

Thanks for the workaround suggestion. I guess I can always define a new plotting region to force par and the plotting data to re-synchronize. It might be nice if those two didn't go out of sync, as I had assumed par would always be reliable.

Oliver

On 10/29/07, Tony Plate <tplate_at_acm.org> wrote:
> I would look into the code for pairs(). Among other things, it sets and
> restores par(mfrow=...). I suspect this is the relevant issue, not the
> use of pairs(). I would try to figure out what state a graphics device
> is in after resetting par("mfrow"). When I try the following (R 2.6.0
> patched, under Windows), I see a line on the plot, but not in a place
> that corresponds to the axis that were drawn by the 'plot()' command:
>
> > par(mfrow=c(2,2))
> > plot(1:2)
> > par(mfrow=c(1,1))
> > lines(1:2,1:2)
> >
>
> (and if you want to be able to set up a new coordinate system on the
> plotting device to draw on top of the plot left by pairs(), look at
> par("new") & something like plot(0:1, type='n', axes=F, xlab=""))
>
> hope this helps,
>
> Tony Plate
>
> Oliver Soong wrote:
> > Hi,
> >
> > I posted over at R-help, and didn't get a response, but perhaps that
> > was the wrong forum for this question. I'm having some confusion over
> > the coordinate system after using pairs. I'm not interested in the
> > content of the actual pairs plot, although the number of pairs seems
> > to matter a bit. I'm purely interested in knowing where subsequent
> > points will be plotted on the device. However, after using pairs, the
> > par information (omd, fig, plt, and usr) don't reflect what points
> > does. For example:
> >
> > pairs(iris[1:5])
> > par(xpd = NA)
> > points(0 - 0.01 * 1:100, 0 - 0.01 * 1:100)
> > points(0 - 0.01 * 1:100, 1 + 0.01 * 1:100)
> > points(1 + 0.01 * 1:100, 0 - 0.01 * 1:100)
> > points(1 + 0.01 * 1:100, 1 + 0.01 * 1:100)
> > par(c("omd", "fig", "plt", "usr"))
> >
> > The resulting plot shows that the corners of the are approximately
> > 0.05 user coordinate units from the boundaries of the plot region.
> > According to par, though, there is a margin around the plotting region
> > that is clearly not symmetric and does not correspond to around 0.05
> > units.
> >
> > If we use pairs(iris[1:2]) and repeat the rest, the corners are now
> > 0.02 user coordinate units. par provides the same information as
> > before.
> >
> > So:
> > 1. How do I figure out where coordinates I give to points will display
> > on the figure?
> > 2. More generally (for my own understanding), why does the par
> > information not do what I expect? Do I have some fundamental
> > misunderstanding of the arrangement of plotting, figure, display, and
> > margin regions within the device? Is there a bug in pairs and/or par?
> >
> > I'm using R 2.5.1, and this behavior occurs on a fresh R console.
> >
> > Thanks!
> >
> > Oliver
> >
> >
> >
>
>

-- 
Oliver Soong
Donald Bren School of Environmental Science & Management
University of California, Santa Barbara
Santa Barbara, CA 93106-5131
805-893-7044 (office)
610-291-9706 (cell)

______________________________________________
R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Mon 29 Oct 2007 - 19:04:48 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Tue 30 Oct 2007 - 03:46:12 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.