[R] Centering multi-line strip text in lattice

Paul Murrell p.murrell at auckland.ac.nz
Wed Mar 11 23:41:25 CET 2009


Hi


Mike Lawrence wrote:
> I'm having trouble centering multi-line strip text in lattice. As the
> code below demonstrates bounding box of the text is centered within
> the strip, but the first line isn't centered in relation to the longer
> second line. The "adj" argument to par.strip.text doesn't seem to do
> much. Suggestions?
> 
> a=data.frame(
> 	x=rep(1:10,2)
> 	,y=rep(1:10,2)
> 	,z=rep(c('First Line\nLonger Second Line (1)','First Line\nLonger
> Second Line (2)'),each=10)
> )
> 
> xyplot(
> 	y~x|z
> 	,data=a
> 	,par.strip.text = list(cex = .75, lineheight=1, lines = 2, adj=.5),
> )


Here's one way, by writing your own strip function that calls the
default strip function with blanked out labels then draws the labels
directly with 'grid' calls.


xyplot(
	y~x|z
	,data=a
	,par.strip.text = list(lines = 1.5),
	strip=function(which.panel, factor.levels, ...) {
                strip.default(which.panel=which.panel,
                              factor.levels=rep("",
                                                length(factor.levels)),
                              ...)
                pushViewport(viewport(clip="on"))
                grid.text(factor.levels[which.panel],
                          gp=gpar(cex=.75, lineheight=1))
                popViewport()
            }
)


Paul
-- 
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