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.

Reply via email to