[R] mtext text size (cex) doesn't match plot

Peter Ehlers ehlers at ucalgary.ca
Thu May 12 16:29:58 CEST 2011


On 2011-05-12 07:16, George Locke wrote:
> thanks for reading the manual for me :X

For a bit more reading, you could check out ?title.
You could replace your mtext(....) calls with

   title(ylab='Y axis', cex.lab=1.5, line=4, font.lab=2)

Peter Ehlers

>
> 2011/5/12 Prof Brian Ripley<ripley at stats.ox.ac.uk>:
>> On Wed, 11 May 2011, George Locke wrote:
>>
>>> Hi,
>>>
>>> I am using mtext instead of the ylab argument in some plots because i
>>> want to move it away from the numbers in the axis.  However, the text
>>> in the X axis,
>>>
>>> for example:
>>>    par(mar=c(5, 5.5, 4, 2));
>>>    plot(data, main="plot name", xlab= 'X axis', ylab="",
>>>         font=2, cex.lab=1.5, font.lab=2, cex.main=1.8);
>>>    mtext('Y axis', side=2, cex=1.5, line=4, font=2);
>>>
>>> This works fine, but if I then set
>>>
>>>    par(mfrow=c(3,2));
>>>
>>> the text produced by mtext becomes much larger than the text "X axis"
>>> produced by plot, despite their having identical cex specifications.
>>> In this case, the words "Y axis" become much larger than "plot name".
>>> Note that without par(mfrow) the size of "X axis" and "Y axis" match
>>> iff their cex(.lab) arguments match.
>>>
>>> How can I make mtext produce text that exactly matches the xlab?  In
>>> my limited experience fiddling around with this problem, the size of
>>> the mtext does not depend on par(mfrow), whereas the size of the xlab
>>> does, so if there were a formula that relates the actual size of text,
>>
>> Please do read the help!  ?mtext says
>>
>>      cex: character expansion factor.  ‘NULL’ and ‘NA’ are equivalent
>>           to ‘1.0’.  This is an absolute measure, not scaled by
>>           ‘par("cex")’ or by setting ‘par("mfrow")’ or ‘par("mfcol")’.
>>
>> so no 'limited experience fiddling around with this problem' was needed.
>>   And see ?par:
>>
>>      ‘cex’ A numerical value giving the amount by which plotting text
>>           and symbols should be magnified relative to the default.
>>           This starts as ‘1’ when a device is opened, and is reset when
>>           the layout is changed, e.g. by setting ‘mfrow’.
>>
>>      ‘mfcol, mfrow’ A vector of the form ‘c(nr, nc)’.  Subsequent
>>           figures will be drawn in an ‘nr’-by-‘nc’ array on the device
>>           by _columns_ (‘mfcol’), or _rows_ (‘mfrow’), respectively.
>>
>>           In a layout with exactly two rows and columns the base value
>>           of ‘"cex"’ is reduced by a factor of 0.83: if there are three
>>           or more of either rows or columns, the reduction factor is
>>           0.66.
>>
>>> cex argument, and par(mfrow), then I could use that to attenuate the
>>> cex argument of mtext.  Any solution will do, so long as it maintains
>>> the relative sizes of the plot and the three text fields (main, x axis
>>> label, y axis label).
>>
>> library(fortunes); fortune(14) applies -- see the posting guide.
>>
>> --
>> 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
>
> ______________________________________________
> 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.



More information about the R-help mailing list