[R] plotmath question
Berton Gunter
gunter.berton at gene.com
Fri Mar 18 22:41:22 CET 2005
R listers:
I have been foiled by plotmath!
(in R 2.01,Windows 2000)
The task: Plot a normal density and label the ticks as mu - 3 sigma, mu - 2
sigma, ...., mu + 3 sigma, where the mu's and sigmas appear as Greek
symbols, of course.
The following code does this:
x<-seq(-3,to=3,by=.01)
y<-dnorm(x)
plot(x,y,type='h',col='lightblue',axes=FALSE)
lines(x,y,col='darkblue')
axis(2)
for(i in seq(-3,to=3))
axis(1,at=i, lab=switch(sign(i)+2,
eval(substitute(expression(mu-j*sigma),list(j=-i))),
expression(mu),
eval(substitute(expression(mu+j*sigma),list(j=i)))))
box()
However, I think the code in the for loop is ugly and probably means that
I'm doing it wrong. In particular:
1) Is there a neat way to use one axis() call and a vector (of expressions?)
for the lab=argument?
2) The plotmath Help state that expressions can be used for axis labels, so
I would have expected the above to work without the eval()call -- but it
does not. Would someone kindly explain to me why not -- i.e., what I have
misunderstood. That is, to be clear, why does the following not work:
for(i in seq(-3,to=3))
axis(1,at=i, lab=switch(sign(i)+2,
substitute(expression(mu-j*sigma),list(j=i)),
expression(mu),
substitute(expression(mu+j*sigma),list(j=i))))
Any further ideas,insights, or pointers to reference materials would also be
appreciated. Many thanks.
-- Bert Gunter
Genentech Non-Clinical Statistics
South San Francisco, CA
"The business of the statistician is to catalyze the scientific learning
process." - George E. P. Box
More information about the R-help
mailing list