Hi David,

It's best to keep the mailing list in the loop so I'm cc-ing to R-help.

I've rethought your problem and propose a different solution.

The main problem is to create a vector of expressions to be used in
the legend.
(see https://stat.ethz.ch/pipermail/r-help/2011-February/270106.html)

  tau.vals <- c(51,88,200)
  types <- c("B&K UA 1404","01dB BAP 21","RION WS3")

  leg <- vector("expression", 3)
  for(i in 1:3) leg[i] <-
  substitute(expression(
                          TYPE ~ group("(", tau == tauval, ")")
                       ),
             list(TYPE=types[i], tauval=tau.vals[i])
            )[2]

  plot(0);legend(x="topright",legend=leg)

The idea is to create an expression vector and then
fill its components appropriately. We need the second
component of the substitute call.

Peter Ehlers

On 2012-03-21 06:49, "ECOTIÈRE David (Responsable d'activité) - CETE Est/LRPC de Strasbourg/6 Acoustique" wrote:
Well, I have some problems with this solution:

Here is my (real) code:

tau<-c(51,88,200)
types<-c("B&K UA 1404","01dB BAP 21","RION WS3")
types<-gsub(pattern=" ", replacement="~",x=types)
leg<-parse(text=paste(types,"(","tau==",tau,"min)", sep='~'))
plot(0)
legend(x="topright",legend=leg)


I've got an error after the 'parse' command :

Erreur dans parse(text = paste(types, "(", "tau==", tau, "min)", sep =
"~")) :
    <text>:2:3: symbole inattendu(e)
1: B&K~UA~1404~(~tau==~51~min)
2: 01dB
       ^

But no error if "01dB" is replaced by "dB01" (which is not what I want
of course). It's like if it was impossible to have a letter that follows
à number.

Any idea ?

Thank you

David

Le 21/03/2012 12:57,>  Peter Ehlers (par Internet) a écrit :
On 2012-03-20 06:09, "ECOTIÈRE David (Responsable d'activité) - CETE
Est/LRPC de Strasbourg/6 Acoustique" wrote:
Hi,

I'd like to make a legend with a mix of mathematical symbol (tau),
numeric variable and character variables.I have tried :


types<-c("Type 1","Type 2","Type 2")
tau<-c(1,3,2)
legend(x="topright",legend=paste(types,"tau=",expression(tau)))



but it doesn't work: the 'tau' symbol is not written in its 'symbol
style' but as 'tau'

Any (good) idea ?
Thank you in advance !

David

Does this do what you want:

types<- paste('Type', 1:3, sep='~')
mytau<- 4:6
leg<- parse(text=paste(types, "~~tau==", mytau, sep='~'))
plot(0)
legend('topright', legend=leg)

The '~' symbols generate spaces; use more if you want more spacing.


Peter Ehlers



______________________________________________
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.
  • ... ECOTIÈRE David (Responsable d'activité) - CETE Est/LRPC de Strasbourg/6 Acoustique
    • ... Patrick Breheny
    • ... Peter Ehlers
      • ... Peter Ehlers

Reply via email to