Skip to content

Centering multi-line strip text in lattice

3 messages · Paul Murrell, Michael Lawrence

#
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),
)
#
Hi
Mike Lawrence wrote:
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
#
Perfect, thanks!
On Wed, Mar 11, 2009 at 7:41 PM, Paul Murrell <p.murrell at auckland.ac.nz> wrote: