[R] Returning to normal after call to layout()

michael watson (IAH-C) michael.watson at bbsrc.ac.uk
Fri Dec 10 13:20:00 CET 2004

Hi Petr

Yes thanks I did get your response and it was helpful.  However, I have
now resorted to using barplot() to draw a legend (as all I wanted was
colored boxes and text) and it works very well for my needs.

Basically, with layout() I'm not getting what I would expect, which may
be a problem with my expectation rather than anything else.  Like I say,
I have a function which draws a plot, using layout to divide the
plotting region into top and bottom.  Fine.  If the user calls my
function, and then another plotting function, I would expect the new
plotting function to overwrite the whole of the old plot - but it
doesn't, it draws the new plot in the top half of the old plot, and
clears the bottom plot.  So what I want is something which says, after
calling layout(), "OK, I'm done plotting in two different regions, I
want you to treat the current device as a single region again".

In a previous package I wrote, when using split.screen() to divide up
the plotting region, dev.off() could be used for this purpose.  But
dev.off() closes the window/plot that I created using layout().


-----Original Message-----
From: Petr Pikal [mailto:petr.pikal at precheza.cz] 
Sent: 10 December 2004 12:12
To: michael watson (IAH-C)
Cc: r-help at stat.math.ethz.ch
Subject: Re: [R] Returning to normal after call to layout()

On 10 Dec 2004 at 11:47, michael watson (IAH-C) wrote:

> Hi
> I have a function which draws a plot, using the layout() function to 
> divide the screen into two parts.  The function works fine, but then 
> my next call to plot() draws the plot in the first section of the plot

> I've just drawn using layout() - whereas what I want it to do is 
> create a new plot.
> I tried using dev.off() but that just closes the layout plot window, 
> which is not what I want.  So my question is - after using the
> layout() function, "layout(matrix(c(1,2), 2, 1))", how do I tell R


what is wrong on this:

layout(matrix(c(1,2), 2, 1))
windows() #opens the new graphic device see ?device, ?windows

BTW did you read my previous post to your question about legend 
on a new window?


> that the next call to a plotting function should use a new window, and

> not the layout window?  I've looked in ?layout but there doesn't seem 
> to be anything in there.
> Thanks
> Mick
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list 
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! 
> http://www.R-project.org/posting-guide.html

Petr Pikal
petr.pikal at precheza.cz

More information about the R-help mailing list