I need to add a legend with three entries that should contain a greek letter (lambda). I learnt that it is possible using the function expression. So I need to build the expressions from the lambdas vector, and I simply cannot do it. This is the uggly result I got: x <- 0:20 cc <- c("yellow", "springgreen", "navyblue") lambdas <- c(6, 10, 13) ds <- as.data.frame(lapply(lambdas, function(ll) dpois(x, ll))) names(ds) <- lambdas funcs <- list(plot, lines) for (i in 1:3) { ff <- funcs[[1+(i!=1)]] ff(x,ds[[i]], type="o", pch=21,bg=cc[i]) } # I can't build the expressions: q <- list(expression(lambda==6), expression(lambda==10), expression(lambda==13)) legend("topright", legend=q, lty=1, pch=21, pt.bg=cc) legend() doesn't interpret the expressions and then it doesn't show the lambda symbol. Do you have any comments on this? Thanks, -Sergio.
On Sep 13, 2014, at 5:55 PM, Julio Sergio Santana wrote:> I need to add a legend with three entries that should > contain a greek letter (lambda). I learnt that it is > possible using the function expression. So I need to > build the expressions from the lambdas vector, and I > simply cannot do it. This is the uggly result I got: > > > x <- 0:20 > cc <- c("yellow", "springgreen", "navyblue") > lambdas <- c(6, 10, 13) > ds <- as.data.frame(lapply(lambdas, function(ll) dpois(x, ll))) > names(ds) <- lambdas > funcs <- list(plot, lines) > > for (i in 1:3) { > ff <- funcs[[1+(i!=1)]] > ff(x,ds[[i]], type="o", pch=21,bg=cc[i]) > } > > # I can't build the expressions: > q <- list(expression(lambda==6), expression(lambda==10), > expression(lambda==13)) > > legend("topright", > legend=q, > lty=1, pch=21, pt.bg=cc)q <- expression(lambda==6, lambda==10 ,lambda==13) legend("topright", legend=q, lty=1, pch=21, pt.bg=cc) -- David.> > legend() doesn't interpret the expressions and then it doesn't show > the lambda symbol. > > Do you have any comments on this? > > Thanks, > > -Sergio. > > ______________________________________________ > 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.David Winsemius, MD Alameda, CA, USA
'q' should be an expression object, not a list of expression objects. Try defining 'q' as q <- as.expression(lapply(lambdas, function(l)bquote(lambda==.(l)))) Bill Dunlap TIBCO Software wdunlap tibco.com On Sat, Sep 13, 2014 at 5:55 PM, Julio Sergio Santana <juliosergio at gmail.com> wrote:> I need to add a legend with three entries that should > contain a greek letter (lambda). I learnt that it is > possible using the function expression. So I need to > build the expressions from the lambdas vector, and I > simply cannot do it. This is the uggly result I got: > > > x <- 0:20 > cc <- c("yellow", "springgreen", "navyblue") > lambdas <- c(6, 10, 13) > ds <- as.data.frame(lapply(lambdas, function(ll) dpois(x, ll))) > names(ds) <- lambdas > funcs <- list(plot, lines) > > for (i in 1:3) { > ff <- funcs[[1+(i!=1)]] > ff(x,ds[[i]], type="o", pch=21,bg=cc[i]) > } > > # I can't build the expressions: > q <- list(expression(lambda==6), expression(lambda==10), > expression(lambda==13)) > > legend("topright", > legend=q, > lty=1, pch=21, pt.bg=cc) > > legend() doesn't interpret the expressions and then it doesn't show > the lambda symbol. > > Do you have any comments on this? > > Thanks, > > -Sergio. > > ______________________________________________ > 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.