[R] math symbol + value of a variable in legend.

Martin Maechler maechler at stat.math.ethz.ch
Thu Aug 27 10:29:55 CEST 2009


>>>>> "KRCT" == Kenneth Roy Cabrera Torres <krcabrer at une.net.co>
>>>>>     on Tue, 25 Aug 2009 17:26:04 -0500 writes:

    KRCT> Thank you very much for your help.

    KRCT> To the R gurus: It will be better at the future to simplify this
    KRCT> options.

    KRCT> They are too cumbersome!!!

The ones  David showed, yes, are too cumbersome.

There's a variant, which is even a bit more elegant,
but really a small (?) change in R's handling of "symbols" could
make it even more elegant.
I'll talk about that on the dedicated list, R-devel.

Here's the slightly more elegant code (for current versions of R):

plot(1:5,1:5,type="n")
legend("topleft", legend=
       c(as.expression( bquote(mu == .(m1)) ),
         as.expression( bquote(mu == .(m2)) )), lty = 1:2)
##
## or with subscripts :
##
legend("top", legend =
       c(as.expression( bquote(mu[1] == .(m1)) ),
         as.expression( bquote(mu[2] == .(m2)) )), lty = 1:2)
##
## or, if you really need to have the subscript as a *variable* as well:
##
i1 <- 11; i2 <- 20
legend("topright", legend =
       c(as.expression( bquote(mu[.(i1)] == .(m1)) ),
         as.expression( bquote(mu[.(i2)] == .(m2)) )), lty = 1:2)


Martin Maechler, ETH Zurich


    KRCT> El mar, 25-08-2009 a las 18:16 -0400, David Winsemius escribió:
    >> On Aug 25, 2009, at 5:51 PM, David Winsemius wrote:
    >> 
    >> >
    >> > On Aug 25, 2009, at 4:30 PM, Kenneth Roy Cabrera Torres wrote:
    >> >
    >> >> Hi R users:
    >> >>
    >> >> I will like to have a legend with math symbols and also with
    >> >> the value of a variable.
    >> >>
    >> >> But I cannot obtain both at the same time (symbol + value of a
    >> >> variable):
    >> >>
    >> >> Here is a reproducible example:
    >> >>
    >> >> m1<-5
    >> >> m2<-12
    >> >
    >> > I think I am violating a fortune but this "worked":
    >> >
    >> > plot(1:5,1:5,type="n")
    >> > legend
    >> > ("topleft",legend=c(eval(substitute( expression(paste(mu,"=",m1)),  
    >> > list(m1=m1) )) , eval(substitute( expression(paste(mu,"=",m2)),  
    >> > list(m2=m2) ) )), lty=1:2)
    >> >
    >> > And efforts at simplification were at least partly successful:
    >> >
    >> > legend("topleft",legend=c(eval(substitute( expression(mu == m1),  
    >> > list(m1=m1) )) ,
    >> >                          eval(substitute( expression(mu == m2),  
    >> > list(m2=m2) ) )),
    >> >                  lty=1:2)
    >> 
    >> And this adds subscripts to the mu's:
    >> 
    >> plot(1:5,1:5,type="n");
    >> legend("topleft",
    >> legend=c( eval(substitute( expression(mu[i] == m1),  
    >> list(i=1, m1=m1) )) ,
    >> eval(substitute( expression(mu[i] == m2),  
    >> list(i=2, m2=m2) ))  ),
    >> lty=1:2)
    >> 
    >> 
    >> >
    >> >
    >> >> plot(1:5,1:5,type="n")
    >> >> legend 
    >> >> ("topleft 
    >> >> ",legend 
    >> >> = 
    >> >> c(paste(expression(mu),"=",m1),expression(paste(mu,"=",m2))),lty=1:2)
    >> >>
    >> >> Thank you for your help.
    >> >>
    >> >> Kenneth
    >> > -- 
    >> 
    >> David Winsemius, MD
    >> Heritage Laboratories
    >> West Hartford, CT
    >> 

    KRCT> ______________________________________________
    KRCT> R-help at r-project.org mailing list
    KRCT> https://stat.ethz.ch/mailman/listinfo/r-help
    KRCT> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
    KRCT> and provide commented, minimal, self-contained, reproducible code.




More information about the R-help mailing list