Hi

On 24/09/12 18:06, Marius Hofert wrote:
Dear Paul,

Thank you for helping. This works great.

I then tried to put in a grid (via grid()). Why does that fail?

Because grid() is used to add lines to an existing plot; just put the grid() call AFTER the plot() call and it should work ok.

Paul

Cheers,

Marius


require(grid)
require(gridBase)

pdf(file="Rplot.pdf", width=8, height=8, onefile=FALSE)

## set up the grid layout
plot.new() # start (empty) new page with 'graphics'
gl <- grid.layout(5, 5, widths=unit(c(1.8, 8, 0.8, 8, 0.8), "cm"),
                  heights=unit(c(0.8, 8, 0.8, 8, 1.5), "cm"))
pushViewport(viewport(layout=gl))

## plot data
par. <- par(no.readonly=TRUE) # save plot settings
for(i in 1:2) { # rows
     i. <- if(i > 1) i+2 else i+1 # jumping over gaps
     for(j in 1:2) { # columns
         j. <- if(j > 1) j+2 else j+1 # jumping over gaps
         pushViewport(viewport(layout.pos.row=i., layout.pos.col=j.))
         grid.rect(gp=gpar(fill="gray90")) # background
         par(plt=gridPLT())
         ## plot
         par(new=TRUE) # always do this before each new 'graphics' plot
         grid(col=1)
         plot(1:10, 1:10, log="y", xlab="", ylab="",
              xaxt=if(i==2) "s" else "n", yaxt=if(j==1) "s" else "n")
         upViewport()
     }
}
par(par.)
dev.off()



Paul Murrell <p...@stat.auckland.ac.nz> writes:

Hi

On 24/09/12 09:36, Marius Hofert wrote:
Hi,

Why does the upper left panel (in the plot below) not have a gray background?

That is a symptom of the conflict that occurs when the 'graphics' package and
the 'grid' package both try to initialise a new page.
A good rule of thumb is to start a new page with 'graphics' first and THEN add
grid' stuff ('grid' is better at sharing), so a minor adjustment to your code
would be (#PAUL marks the changes) ...


pdf(file="Rplot.pdf", width=8, height=8, onefile=FALSE)
#PAUL
# Start (empty) new page with 'graphics'
plot.new()
## set up the grid layout
gl <- grid.layout(5, 5, widths=unit(c(1.8, 8, 0.8, 8, 0.8), "cm"),
                  heights=unit(c(0.8, 8, 0.8, 8, 1.5), "cm"))
pushViewport(viewport(layout=gl))
## plot data
par. <- par(no.readonly=TRUE) # save plot settings
for(i in 1:2) { # rows
     i. <- if(i > 1) i+2 else i+1 # jumping over gaps
     for(j in 1:2) { # columns
         j. <- if(j > 1) j+2 else j+1 # jumping over gaps
         pushViewport(viewport(layout.pos.row=i., layout.pos.col=j.))
         grid.rect(gp=gpar(fill="gray90")) # background
         par(plt=gridPLT())
         ## plot
         #PAUL
         # ALWAYS do this before each new 'graphics' plot
         par(new=TRUE)
         plot(1:10, 1:10, log="y", xlab="", ylab="",
              xaxt=if(i==2) "s" else "n", yaxt=if(j==1) "s" else "n")
         upViewport()
     }
}
par(par.)
dev.off()


Hope that helps.

Paul

Cheers,

Marius


require(grid)
require(gridBase)

pdf(file="Rplot.pdf", width=8, height=8, onefile=FALSE)

## set up the grid layout
gl <- grid.layout(5, 5, widths=unit(c(1.8, 8, 0.8, 8, 0.8), "cm"),
                  heights=unit(c(0.8, 8, 0.8, 8, 1.5), "cm"))
if(FALSE) grid.show.layout(gl)
pushViewport(viewport(layout=gl))

## plot data
par. <- par(no.readonly=TRUE) # save plot settings
for(i in 1:2) { # rows
      i. <- if(i > 1) i+2 else i+1 # jumping over gaps
      for(j in 1:2) { # columns
          j. <- if(j > 1) j+2 else j+1 # jumping over gaps
          pushViewport(viewport(layout.pos.row=i., layout.pos.col=j.))
          grid.rect(gp=gpar(fill="gray90")) # background
          par(plt=gridPLT())
          ## plot
          plot(1:10, 1:10, log="y", xlab="", ylab="",
               xaxt=if(i==2) "s" else "n", yaxt=if(j==1) "s" else "n")
          par(new=TRUE) # to be run after first plot
          upViewport()
      }
}
par(par.)
dev.off()

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.



--
Dr Paul Murrell
Department of Statistics
The University of Auckland
Private Bag 92019
Auckland
New Zealand
64 9 3737599 x85392
p...@stat.auckland.ac.nz
http://www.stat.auckland.ac.nz/~paul/

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to