par("mfrow") and, apparently layout(), set things up for the next plot but don't change
the settings for the current plot.  Hence you need to start a new plot to look at the settings
for it.  If you don't call par(new=TRUE) then the subsequent call to plot() (which calls the
equivalent of plot.new()) will start another plot, leaving a hole in the layout.

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com

From: zhenjiang.xu@gmail.com [mailto:zhenjiang.xu@gmail.com] On Behalf Of Not To Miss
Sent: Saturday, March 09, 2013 6:25 PM
To: William Dunlap
Cc: r-help
Subject: Re: [R] get current plot dimensions?

Learned a new trick. thanks!
Zech

On Fri, Mar 8, 2013 at 6:41 PM, William Dunlap <wdunlap@tibco.com<mailto:wdunlap@tibco.com>> wrote:
Try using the combination
   plot.new() ; par(new=TRUE)
to advance to the next position in the layout before querying par("pin").
Be sure to actually plot something after the par(new=TRUE).

E.g.,
> layout(matrix(c(1,2,3,4), nrow=2), width=c(1,3), height=c(1,3))
> plot.new() ; par(new=TRUE)
> par("pin")
[1] 0.6624667 0.1623834
> plot(10:19, main="One")
> par("pin")
[1] 0.6624667 0.1623834
>
> plot.new() ; par(new=TRUE)
> par("pin")
[1] 0.6624667 3.5415500
> plot(20:29, main="Two")
> par("pin")
[1] 0.6624667 3.5415500


Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com<http://tibco.com>


> -----Original Message-----
> From: r-help-bounces@r-project.org<mailto:r-help-bounces@r-project.org> [mailto:r-help-bounces@r-project.org<mailto:r-help-bounces@r-project.org>] On Behalf
> Of Not To Miss
> Sent: Friday, March 08, 2013 5:12 PM
> To: r-help
> Subject: [R] get current plot dimensions?
>
> Hi R users,
>
> I find par("pin") is kind of confusing (or maybe just me?). The manual said
> it will give " The current plot dimensions, '(width,height)', in inches."
> The word "current" is the key here. I thought it would give the dimensions
> of the to-be plot, but it actually gives the dimension of the finished plot:
>
> > layout(matrix(c(1,2,3,4), nrow=2), width=c(1,3), height=c(1,3))
> > par("pin")
> [1] 4.216666 3.721324
> > plot(x)
> > par("pin")
> [1] 0.7194221 0.2223079
> > plot(x)
> > par("pin")
> [1] 0.7194221 3.7213237
> > plot(x)
> > par("pin")
> [1] 4.2166662 0.2223079
> > plot(x)
>
>
> So, if par("pin") doesn't give to-be plot, how can I get its dimension?
>
> Thanks,
> Zech
>
>       [[alternative HTML version deleted]]


	[[alternative HTML version deleted]]

