[R] Different behavior of mtext

Prof Brian Ripley ripley at stats.ox.ac.uk
Mon Sep 3 09:27:22 CEST 2007


On Sun, 2 Sep 2007, Sébastien wrote:

> Dear R Users,
>
> I am quite surprised to see that mtext gives different results when it
> is used with 'pairs' and with "plot'. In the two following codes, it
> seems that the 'at' argument in mtext doesn't consider the same unit system.

It is stated to be in 'user coordinates'.  Your code does not work because 
unit() is missing.  If you mean the one from package grid, "npc" is not 
user coordinates (and refers to a grid viewport which you have not set up 
and coincidentally is the same as the initial user coordinate system to 
which pairs() has reverted).

Try par("usr") after your pairs() and plot() calls to see the difference.
Plotting a 2x2 array of plots _is_ different from plotting one, so this 
should be as expected.

Since centring is the default for 'adj', it is unclear what you are trying 
to achieve here.

> I would appreciate your comments on this issue.
>
> Sebastien
>
> ##### Pairs
>
> mydata<-data.frame(x=1:10,y=1:10)
>
> par(cex.main=1, cex.axis=1, cex.lab=1, lwd=1,
>    mar=c(5 + 5,4,4,2)+0.1)
>
> pairs(mydata,oma=c(5 + 5,4,4,2))
>
> mylegend<-c("mylegend A","mylegend B","mylegend C","mylegend test")
> mylegend.width = strwidth(mylegend[which.max(nchar(mylegend))], "figure")
>
> for (i in 1:4) {
> mtext(text=mylegend[i],
>        side = 1,
>        line = 3+i,
>        at = unit((1-mylegend.width)/2,"npc"),            # centers the
> legend at the bottom
>        adj=0,
>        padj=0)}
>
> ##### plot
>
> mydata<-data.frame(x=1:10,y=1:10)
>
> par(cex.main=1, cex.axis=1, cex.lab=1, lwd=1,
>    mar=c(5 + 5,4,4,2)+0.1)
>
> plot(mydata,oma=c(5 + 5,4,4,2))
>
> mylegend<-c("mylegend A","mylegend B","mylegend C","mylegend test")
> mylegend.width = strwidth(mylegend[which.max(nchar(mylegend))], "figure")
>
> for (i in 1:4) {
> mtext(text=mylegend[i],
>        side = 1,
>        line = 3+i,
>        at = unit((1-mylegend.width)/2,"npc"),            # should
> center the legend at the bottom but doesn't do it !
>        adj=0,
>        padj=0)}

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595


More information about the R-help mailing list