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)) ))) } 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.