On Sep 5, 2014, at 4:53 PM, David Winsemius wrote: > > On Sep 5, 2014, at 4:15 PM, Jinsong Zhao wrote: > >> On 2014/9/4 14:58, David L Carlson wrote: >>> The problem with this approach is that the horizontal positioning of the >>> labels is based on the width of the label including the phantom part so >>> that the E's are pushed to the left of the tick mark (at least on my >>> Windows machine). But it does provide a way of dealing with superscripts as >>> long as the phantom is added to each label and hadj= is used to position >>> the label horizontally, eg (changing the last label to a superscript for >>> illustration): >>> >>> lbl <- expression(E[g]~phantom(E[g]), E~phantom(E[g]), E[j]~phantom(E[g]), >>> E~phantom(E[g]), E^t~phantom(E[g])) >>> plot(1:5, xaxt = "n") >>> axis(1, at = 1:5, labels = lbl, hadj=.1) >>> abline(h=.7, xpd=TRUE, lty=3) >>> >>> David C >> >> Yes, it works well. However, we have to adjust the hadj with our eyes. >> >> I hope the TODO wish can be implemented in the nearly future. > > Man, this is a really hard crowd to please. Consider this use of the > c(expression(),...) "trick" and the appending of super and subscripts to > every item fore and aft (sailing terminology): > > updown <- function(x){ e <- expression(); return(c(e,sapply( x, function(x) > bquote( phantom(E)^phantom(t)*.(x)*phantom(E)[phantom(g)] , list(x=x)) ))) }
There is an extraneous list(x=x) left over from when I was trying to use substitute() that should be removed, although it didn't seem to affect the output.. > > lbl <- expression(E[g], E, E[j], E, E^t) > > plot(1:5, xaxt = "n") > axis(1, at = 1:5, labels = updown(lbl) ) > abline(h=.7, xpd=TRUE, lty=3) > > > >> >> Thanks a lot. >> >> Best regards, >> Jinsong >> >> >>> >>> -----Original Message----- >>> From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On >>> Behalf Of David Winsemius >>> Sent: Thursday, September 4, 2014 2:25 PM >>> To: Jinsong Zhao >>> Cc: r-help@r-project.org >>> Subject: Re: [R] depth of labels of axis >>> >>> >>> On Sep 3, 2014, at 10:05 PM, Jinsong Zhao wrote: >>> >>>> On 2014/9/3 21:33, Jinsong Zhao wrote: >>>>> On 2014/9/2 11:50, David L Carlson wrote: >>>>>> The bottom of the expression is set by the lowest character (which can >>>>>> even change for subscripted letters with descenders. The solution is >>>>>> to get axis() to align the tops of the axis labels and move the line >>>>>> up to reduce the space, e.g. >>>>>> >>>>>> plot(1:5, xaxt = "n") >>>>>> axis(1, at = 1:5, labels = c(expression(E[g]), "E", expression(E[j]), >>>>>> "E", expression(E[t])), padj=1, mgp=c(3, .1, 0)) >>>>>> # Check alignment >>>>>> abline(h=.7, xpd=TRUE, lty=3) >>>>> >>>>> yes. In this situation, padj = 1 is the fast solution. However, If there >>>>> are also superscript, then it's hard to alignment all the labels. >>>>> >>>>> If R provide a mechanism that aligns the label in axis() or text() with >>>>> the baseline of the character without the super- and/or sub-script, that >>>>> will be terrific. >>>> >>>> it seems that the above wish is on the Graphics TODO lists: >>>> https://www.stat.auckland.ac.nz/~paul/R/graphicstodos.html >>>> >>>> Allow text adjustment for mathematical annotations which is relative to a >>>> text baseline (in addition to the current situation where adjustment is >>>> relative to the bounding box). >>>> >>> >>> In many case adding a phantom argument will correct aliognment problems: >>> >>> plot(1:5, xaxt = "n") >>> axis(1, at = 1:5, labels = c(expression(E[g]), E~phantom(E[g]), >>> expression(E[j]), >>> E~phantom(E[g]), expression(E[t]))) >>> >>> abline(h=.7, xpd=TRUE, lty=3) >>> >>> Notice that c(expression(.), ...) will coerce all items separated by commas >>> to expressions, sot you cna just put in "native" expression that are not >>> surrounded by the `expression`-function >>> >>> c(expression(E[g]), E~phantom(E[g]), expression(E[j]) ) #returns >>> # expression(E[g], E ~ phantom(E[g]), E[j]) >>> >>> The tilde is actually a function that converts parse-able strings into R >>> language objects: >>> >>> c(expression(E[g]), E~phantom(E[g]), ~E[j]) >>> >> >> ______________________________________________ >> 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. > > David Winsemius > Alameda, CA, USA > > ______________________________________________ > 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. David Winsemius Alameda, CA, USA ______________________________________________ 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.