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.

Reply via email to