[R] Jump between figures in multifigure environment

Naresh Gurbuxani n@re@h_gurbux@n| @end|ng |rom hotm@||@com
Wed Nov 12 22:25:57 CET 2025


Paul,

First solution works for me.  To change something in an earlier figure, I can start over and redraw all figures.  

In practice, how is mfg used?

Thanks,
Naresh

Sent from my iPhone

> On Nov 12, 2025, at 3:04 PM, Paul Murrell <paul using stat.auckland.ac.nz> wrote:
> 
> Hi
> 
> Base graphics is designed for drawing everything in a figure before moving on to the next figure.  Also, 'mfg' can only be set via par().
> Are you looking for something like this ... ?
> 
> 
> par(mfrow = c(2, 2))
> for (i in 1:2) {
>    for (j in 1:2) {
>        par(mfg = c(i, j))
>        plot(c(0, 1), c(0, 1), type = "n")
>        text(0.5, 0.5, labels = paste("(", i, ",", j, ")"))
>    }
> }
> 
> 
> If you really want to revisit previous figures, you might try split.screen(), but it is pretty fragile and, as the example below shows, still not designed for revisiting a previous *plot* (just a previous figure region) ...
> 
> 
> split.screen(c(2, 2))
> for (i in 1:4) {
>    screen(i)
>    plot(c(0, 1), c(0, 1), type = "n")
> }
> for (i in 1:2) {
>    for (j in 1:2) {
>        screen(2*(i - 1) + j)
>        text(0.5, 0.5, labels = paste("(", i, ",", j, ")"))
>    }
> }
> 
> 
> If you REALLY want to revisit previous drawing, you might need to look at {grid} viewports, which are designed to allow you to get back to the original drawing context ...
> 
> 
> library(grid)
> grid.newpage()
> pushViewport(viewport(layout=grid.layout(2, 2)))
> for (i in 1:2) {
>    for (j in 1:2) {
>        pushViewport(viewport(layout.pos.row=i, layout.pos.col=j,
>                              name=paste0(i, j)))
>        grid.rect(width=.8, height=.8)
>        upViewport()
>    }
> }
> for (i in 1:2) {
>    for (j in 1:2) {
>        downViewport(paste0(i, j))
>        grid.text(paste("(", i, ",", j, ")"))
>        upViewport()
>    }
> }
> 
> 
> Paul
> 
> 
>> On 13/11/25 07:28, Naresh Gurbuxani wrote:
>> After drawing multiple figures, I want to select an earlier figure to add some low level commands.  Using mfg parameter runs all commands in the most recent figure only.  How can an earlier figure be selected?
>> Thanks,
>> Naresh
>> par(mfrow = c(2, 2))
>> for (i in 1:4) plot(c(0, 1), c(0, 1), type = "n”)
>> for (i in 1:2) {for (j in 1:2) text(0.5, 0.5, labels = paste("(", i, ",", j, ")"), mfg = c(i, j, 2, 2))}
>> #All text is in bottom right figure only
>> ______________________________________________
>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide https://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
> 
> --
> Dr Paul Murrell (he/him)
> Te Kura Tatauranga | Department of Statistics
> Waipapa Taumata Rau | The University of Auckland
> Private Bag 92019, Auckland 1142, New Zealand
> 64 9 3737599 x85392
> paul using stat.auckland.ac.nz
> www.stat.auckland.ac.nz/~paul/
> 


More information about the R-help mailing list