This does depend on the unstated device. But on most devices the string width is either exactly or approximately proportional to cex. Some devices cannot scale fonts so there is a small set of available sizes: in which case you can use uniroot() to find the cex corresponding to the closest fit.

Information on which sizes are available is in the device's help page, at least for devices provided by the core team.

On 06/05/2013 08:03, Dario Beraldi wrote:
Hello,

I need to add some text to a plot and I would like this text to be of a
given width in user coordinates.

I know I can get the width of a string for a given cex using strwidth. But
how can I do the other way around? How can I get the cex value that will
make my string of a given width (at least approximately)?

In this example I want my string to have width 50 so the 'target' cex would
be 1.5, at least on my device:

mytext<- 'Text to shrink or expand'
text_width<- 50
pdf()
plot(0, xlim= c(0, 100), ylim= c(0, 100))
strwidth(mytext, units= 'user', cex= 1)   ## Too small
#[1] 33.00625
strwidth(mytext, units= 'user', cex= 2)   ## Too big
#[1] 66.0125
strwidth(mytext, units= 'user', cex= 1.5) ## About right
#[1] 49.50937
dev.off()

Thanks!
Dario

        [[alternative HTML version deleted]]

______________________________________________
R-help@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.



--
Brian D. Ripley,                  rip...@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@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.

Reply via email to