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

-----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])

-- 
David.

>>> 
>>> 
>>> -----Original Message-----
>>> From: r-help-boun...@r-project.org
>>> [mailto:r-help-boun...@r-project.org] On Behalf Of Jinsong Zhao
>>> Sent: Monday, September 1, 2014 6:41 PM
>>> To: r-help@r-project.org
>>> Subject: [R] depth of labels of axis
>>> 
>>> Hi there,
>>> 
>>> With the following code,
>>> 
>>> plot(1:5, xaxt = "n")
>>> axis(1, at = 1:5, labels = c(expression(E[g]), "E", expression(E[j]),
>>> "E", expression(E[t])))
>>> 
>>> you may notice that the "E" within labels of axis(1) are not at the same
>>> depth. So the vision of axis(1) labels is something like wave.
>>> 
>>> Is there a possible way to typeset the labels so that they are have the
>>> same depth?
>>> 
>>> Any suggestions will be really appreciated. Thanks in advance.
>>> 
>>> Best regards,
>>> Jinsong

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.

______________________________________________
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.

Reply via email to