[R] Help combining cell labelling and multiple mosaic plots

Paul Murrell p.murrell at auckland.ac.nz
Mon Nov 7 02:26:36 CET 2011


Hi

The problem is that BOTH mosaic() and labeling_cells() are calling 
seekViewport() to find the right viewport to draw into and for BOTH 
plots they are finding the same viewports (on the left side of the 
page).  The following code solves the problem (for me anyway) by 
specifying a different 'prefix' for each mosaic() and labeling_cells() 
call ...


grid.newpage()
pushViewport(viewport(layout=grid.layout(1,2)))
pushViewport(viewport(layout.pos.col=1))
mosaic(.test, gp=shading_hsv, pop=FALSE, split_verticaL=FALSE,
        newpage=FALSE,
        labeling_args=list(offset_varnames=c(top=3),
                           offset_labels=c(top=2)),
        prefix="plot1")
labeling_cells(text=round(prop.table(.test, 1), 2)*100,
                clip=FALSE)(.test, prefix="plot1")
upViewport()

pushViewport(viewport(layout.pos.col=2))
mosaic(.test1, gp=shading_hsv, newpage=FALSE, pop=FALSE,
        split_vertical=FALSE,
        labeling_args=list(offset_varnames=c(top=3),
                           offset_labels=c(top=2)),
        prefix="plot2")
labeling_cells(text=round(prop.table(.test1, 1), 2)*100,
                clip=FALSE)(.test1, prefix="plot2")
popViewport(2)


... hope that helps.

Paul

On 1/11/2011 5:21 a.m., Simon Kiss wrote:
> Dear colleagues I'm using data that looks like .test and .test1 below
> to draw two mosaic plots with cell labelling (the row percentages
> from the tables). When I take out the pop=FALSE commands in the
> mosaic commands and comment out the two lines labelling the cells,
> then the plots are laid out exactly as I'd like: side-by-side. But I
> do require the cell labelling and the pop=FALSE arguments. I suspect
> I need to add in a call to pushViewport or an upViewport command, but
> I'm not sure. Any advice is welcome.
>
>
> library(vcd) library(grid)
>
>
> .test<-as.table(matrix(c(1, 2, 3, 4, 5, 6), nrow=3, ncol=2,
> byrow=TRUE)) .test<-prop.table(.test, 1) .test1<-as.table(matrix(c(1,
> 2, 3, 4), nrow=2, ncol=2, byrow=TRUE)) .test1<-prop.table(.test1, 1)
>
> dimnames(.test)<-list("Fluoride Cluster"=c('Beneficial\nand Safe',
> 'Mixed Opinion', 'Harmful With No Benefits'), "Governments Should Not
> Impose Treatment"=c('Agree', 'Disagree'))
> dimnames(.test1)<-list("Vaccines Are Too Much To Handle"= c('Agree' ,
> 'Disagree'), "Governments Should Not Oblige Treatment" =c('Agree',
> 'Disagree')) grid.newpage()
> pushViewport(viewport(layout=grid.layout(1,2)))
> pushViewport(viewport(layout.pos.col=1)) mosaic(.test,
> gp=shading_hsv, pop=FALSE, split_verticaL=FALSE, newpage=FALSE,
> labeling_args=list(offset_varnames=c(top=3),
> offset_labels=c(top=2))) labeling_cells(text=round(prop.table(.test,
> 1), 2)*100, clip=FALSE)(.test) popViewport()
>
> pushViewport(viewport(layout.pos.col=2)) mosaic(.test1,
> gp=shading_hsv, newpage=FALSE,pop=FALSE, split_vertical=FALSE,
> labeling_args=list(offset_varnames=c(top=3),
> offset_labels=c(top=2))) labeling_cells(text=round(prop.table(.test1,
> 1), 2)*100, clip=FALSE)(.test1) popViewport(2)
> ********************************* Simon J. Kiss, PhD Assistant
> Professor, Wilfrid Laurier University 73 George Street Brantford,
> Ontario, Canada N3T 2C9 Cell: +1 905 746 7606
>
> ______________________________________________ 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