Re: R-beta: mfg weirdness

Ross Ihaka (
Thu, 26 Mar 1998 22:49:28 +1200 (NZST)

Date: Thu, 26 Mar 1998 22:49:28 +1200 (NZST)
From: Ross Ihaka <>
Message-Id: <>
Subject: Re: R-beta: mfg weirdness

> From: Bill Simpson <>
> To: r-help <>
> Subject: R-beta: mfg weirdness
> It seems there are problems with mfg, both the old version .61.2 and the
> snapshot .62.
> > x<-rnorm(100)
> > y<-rnorm(100)
> > y1<-x/y
> > x11()            
> > par(mfcol=c(2,1))
> > par(mai=c(.6,.6,.2,.2))
> > plot(x,y,mfg=c(2,1,2,1))
> I'm not sure if 2,1 is considered the top or the bottom position on the
> page, but whether you say mfg=c(2,1,2,1) or mfg=c(1,1,2,1), the first plot
> is always drawn at the top position.
> > plot(x,y,mfg=c(2,1,2,1))
> Now the second plot is drawn at the bottom position.  Again, the mfg
> argument has no effect. The second plot is always at the bottom
> > plot(x,y1,mfg=c(2,1,2,1))
> Now the whole figure is cleared and a single plot appears at the top.
> Further plots alternate in position in this way, independent of mfg.

I just checked my S manual and it appears that layout parameters like
can "mfg" only be given in par().  I think that in fact "mfg" is only
meant to be queried.

Perhaps not unrelatedly ...

After some discussion with Paul Murrell I am inclined to think that
the whole graphics system needs a rewrite, even though this would
mean incompatibility with S.  A major problem is that the whole "par"
system does not work when devices can be resized.  Consider the
following series of steps:

	opar <- par()		# save parameters

	# manually resize window

	par(opar)		# restore saved parameters

Before the resize, "fig" and "fin" are compatible, but after the resize
they are not.  So which should be used to determine the plot layout?

[ Splus seems to get around this by not changing the nominal plot size
when the graphics window is resized.  (Check the value of "din", "fin",
etc. before and after a resize)]

In Paul's work on maintaining display lists, he keeps track of the
units which a user used to set up a plot (was it "fin" or "fig"?)
and recomputes plot layouts using this unit information.

In interpreted code the saving and restoring of the graphics state is
done with

	opar <- par()



This can't work when window resizing is allowed.

Does anyone have any thoughts about how important it is to retain
compatibility with the S way of doing things?

r-help mailing list -- Read
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: