R-beta: math in legends: strwidth() will have to be enhanced

Martin Maechler maechler at stat.math.ethz.ch
Mon Nov 3 16:02:33 CET 1997

>>>>> "Jim" == Jim Lindsey <jlindsey at luc.ac.be> writes:

    Jim> Expression is great for math on the axes of plots. However, it
    Jim> does not appear to work in legend. Any chance of including this?

The only thing which must be enhanced is the

Here is a **very** cheap workaround for  `strwidth'
which makes legend "work" with expressions:

strwidth <- function(s, units="user", cex=NULL) {
 fudge <- 1
 if(!is.character(s)) {
	 if(is.expression(s)) {
	   ##-- Internal 'strwidth' should be enhanced for expressions !!!
	   ##-- The following is a CHEAP workaround !
	   ns <- length(se <- s); s <- character(ns)
	   for(i in 1:ns) s[i] <- paste(deparse(se[i]),collapse="")
	 } else stop("`s' must be `character' or `expression'")
	 fudge <- 0.6
 fudge*.Internal(strwidth(s, pmatch(units, c("user", "figure", "inches")), cex))

E.g., the following example now works for me:

    ex12 <- expression(bar(x) == sum(over(x[i], n), i==1, n),
		       hat(x) == median(x[i], i==1,n))

    legend(7,4, ex12, y.intersp = 2)

Martin Maechler <maechler at stat.math.ethz.ch>		 <><
Seminar fuer Statistik, SOL G1
ETH (Federal Inst. Technology)	8092 Zurich	 SWITZERLAND
phone: x-41-1-632-3408		fax: ...-1086
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch

More information about the R-help mailing list