[R] Background color in a grid plot seems to interfere with plot()
Paul Murrell
paul at stat.auckland.ac.nz
Mon Sep 24 22:30:25 CEST 2012
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 <paul at 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 at 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
paul at stat.auckland.ac.nz
http://www.stat.auckland.ac.nz/~paul/
More information about the R-help
mailing list