[R] mtext uses the typographical descender to align text

Peter Dalgaard p.dalgaard at biostat.ku.dk
Mon Aug 14 16:33:15 CEST 2006

Andreas Svensson <andreas.svensson at bio.ntnu.no> writes:

> <>
> Hello
> One sometimes (quite often really ) marvel at the choice of defaults in 
> R's graphic engine.
> For some obscure reason, mtext uses the typographical  descender (bottom 
> of letters) to align text. That is: "gG" will end up slightly higher 
> that "GG". Depending on the font, "Q" might end up higher than "O".
> (for explanation of baseline & descender see: 
> http://www.paratype.com/help/term/terms.asp?code=88)
> mtext(expression(italic("Normal 1"))   ,1 ,  line=1, at=1)
> As the word "Higher" includes a descending letter (g), this factor name 
> ends up higher.
> I must say I have never encountered a software that uses the 
> typographical descender instead of the baseline to align text .
> Does anyone know how to make R use the baseline instead? Perhaps using  
> adj or padj? Or do I have to do something silly as adding
> "g", col=white
> to each mtext-line to trick R into aligning the names.

Notice that it only happens when plotting math expressions. Using 

 mtext("Normal 1"   ,1 ,  line=1, at=1,font=3)
 mtext("Higher 1 "  ,1 ,  line=1, at=2, font=3)

does not exhibit the same effect. 

I suppose the idea is that math expressions can grow arbitrarily tall
or deep, and that the design decision (wise or not) has been to align
on the bounding box of the whole enchilada. For a workaround, if you
do need to do it with expressions, notice the phantom() construction.

   O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark          Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)                  FAX: (+45) 35327907

More information about the R-help mailing list