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