split.screen(figs, screen=<<see below>>, erase=T) screen(n=<<see below>>, new = T) erase.screen(n=<<see below>>, eject = F) close.screen(n, all = F) prompt.screen(delta = 1/8, draw = T)
c(n,m)
where
n
and
m
are
integers indicating a matricial arrangement of screens in the display; or
an
N
by
4
matrix where
N
is the number
of screens and each row
specifies the position of a screen on the display in terms of relative
coordinates in a plane represented by
c(0,1,0,1)
.
For each row the first 2 numbers represent the x-coordinates of the
screen (first the left corner and second the right corner)
and the next are the two y-coordinates (first the bottom, and second
the top).
Use
prompt.screen
to create this matrix interactively.
screen
,
or erased by
erase.screen
,
or closed by
close.screen
in which case it could also be a vector (the
active screen cannot be closed).
The default value for
screen
and
erase.screen
is
the currently active screen.
all = TRUE
to exit the
split-screen mode.
delta
inches from a neighboring screen, screen borders are made to coincide.
split.screen
returns the indices of the newly created screens.
With no arguments,
split.screen
returns a list of current
valid screens or
FALSE
if not running under the split-screens environment.
close.screen
returns the index numbers of the active screens left.
screen
,
erase.screen
, and
close.screen
return
FALSE
if
invoked outside the split-screen environment.
prompt.screen
returns an
N
by 4 matrix of screen coordinates
where
N
is determined by the desired number of screens entered
interactively and the coordinates are determined by
a point-and-click interaction using
locator
.
This matrix can then be given to
split.screen
to set up a multiple
screen environment.
split.screen
initializes the
objects
.Scr.info
,
.Active.screen
,
.Init.gs
, and
.GS.pars
in the session database to store the graphics states for all screens.
erase.screen
causes the first valid screen to be made active
(in most cases this is screen 1) on exit.
close.screen
closes (i.e., disables) the specified screens.
Graphics output present at closing is left intact.
These functions
provide a means to divide up the graphics display into multiple
screens or figures of various sizes.
The split-screen mode is an alternative to the usual multiple-figure
mode obtained by
par(mfrow=c(n,m))
, and it is useful for
interacting with individual figures and for producing non-matricial
arrangements of plots;
however, the two modes are not compatible i.e., you cannot mix calls
to
split.screen
and
par(mfrow)=c(n,m))
.
Graphics input and output is directed to and from different screens
by calling
screen
to designate the active one.
If you move to a new screen and
new
is
FALSE
, then a call to a high-level
plot function will not clear it; the plot will be superimposed on anything already on the screen. If, however, you call high-level plot
functions twice in an active screen, the second call starts a new
page, and all the other screens on that page will be empty.
As part of the initialization,
split.screen
activates
the first screen in
figs
.
Screens can be recursively divided. See the examples.
Use
close.screen(all=T)
to "unsplit" the display.
Outer margins are not defined in the context of split-screens, thus
the graphics parameters
oma
and
omi
should not be used.
If any screen in
figs
is smaller than half of the
horizontal or vertical dimensions of the graphics display, the
character expansion factor parameter
cex
is set to 0.5
in all the screens.
These functions are not compatible with some other plotting functions
in S-PLUS like
pairs
,
acf.plot
, and
coplot
, given the way they
re-define the graphics display parameters.
They cannot be used with multiple devices either.
#Example 1 split.screen(c(2,1)) # split display into two screens [1] 1 2 split.screen(c(1,3), screen = 2) # now split the bottom half into 3 [1] 3 4 5 screen(1) # prepare screen 1 for output tsplot(lynx) screen(4) # prepare screen 4 for output tsplot(lag(lynx)) dev.print() close.screen(all = T) # exit split-screen mode #Example 2 split.screen(c(2,1)) # split display into two screens [1] 1 2 split.screen(c(1,2),2) # split bottom half in two [1] 3 4 tsplot(corn.rain) # screen 3 is active, draw plot erase.screen() #forgot label, erase and redraw tsplot(corn.rain, ylab= "rain in inches") screen(1) # prepare screen 1 for output tsplot(corn.rain) legend(1902, 9, c("corn", "yield"), lty=1:2) screen(4) # prepare screen 4 for output tsplot(corn.yield, ylab="yield in bushels/acre") screen(1, F) #return to screen 1, but do not clear tsplot(window(corn.yield, start(corn.yield), end(corn.yield)), axes = F, lty = 2) # overlay second plot axis(4) # add tic marks to right-hand axis title("Rainfall and Corn Yield in six Cornbelt States") #Example 3 # decide the positioning of screens interactively split.screen(prompt.screen())