On May 13, 2012, at 10:43 AM, Bert Gunter wrote:

Peter/David:

1. For some reason, I didn't see Peter's reply on r-help.

2. To Peter: Aha!!
Let me play this back to you. In

text(1,1,labels=expression(atop(atop(sigma,"some text"),"another
level")),cex = 2)

The (outer) whole atop() specification is allocated twice the amount
of space that would be required for the current font size, cex =1.
Then each of the top and bottom is allocated the amount of space
needed within this cex = 2 space. For the inner atop to fit within
that allocated amount of space, its top and bottom must get smaller,
of course. N'est-ce pas?

This makes sense to me!  My misunderstanding is thinking that cex
applied to the individual text components, not the entire expression.
Enlightenment much appreciated.

3. However, this now begs the question of how to keep all text and
symbols the same size, which is really what the OP really wanted (a
way to emulate multiple lines). I'll fool around with this to see what
I come up with now that I'm enlightened -- or see if you or David come
up with something clever.

Any cleverness I exhibit on these pages is generally ascribable to my R-betters. When faced with a request like this, I just fire up Google and generally find an answer from Lumley, Grothendieck, Ligges, or in this case, Schwartz (from an rhelp post in 2009). This was the first hit that wasn't a link to R documentation with a search on "multiple lines expression plotmath r"

# values to pull from using bquote
 X= 2.3
Y= 5.6
txtList <- list("Line # 1",
     "Longer line #2",
      bquote(X == .(X)),
     "and",
      bquote(The~value~of~Y == .(Y)))

plot(1,type="n", xaxt='n', yaxt='n', ann=FALSE)
text(1.2, seq(1.2, 1.1, len=5) , labels=do.call(expression, txtList))

I think this is a fairly generally strategy but I'm certainly willing to take a crack at further modifications if desired.

--
david.



Cheers,
Bert



On Sat, May 12, 2012 at 9:27 PM, David Winsemius <dwinsem...@comcast.net > wrote:

On May 12, 2012, at 6:27 PM, Peter Ehlers wrote:

Hi Bert,

I think the 'cex=' argument applies to the outermost 'atop()'.
It then applies that size specification to each of the two
components of the atop(a,b). If one of the components is itself
another atop(a,b), then the individual parts are sized downward
to produce the required cex for the unit.

As for the 'cex=1:2' specification, only the first value is used.


Isn't there also a 0.67 factor being applied to whatever was the "outside" size prior to being used for the atop arguments? So the inner atop arguments
get that applied twice if I understand correctly.

text(1,1,labels=expression(atop(
              atop("top level one", "top level two"),
              "another level")
    ) )


I did notice that the cr-linefeed (perhaps unintentionally being inserted by
a mail client) seemed to be "working" at least on my Mac :

plot(1,1)
text(1,1,labels=expression("another
level")
    )

Whereas it is well known that "\n" will appear as two characters, \n, and
not be interpreted as a special.
--
David


Cheers,
Peter Ehlers

On 2012-05-12 14:05, Bert Gunter wrote:

This is a followup to a recent post on using atop() to obtain
multiline expressions.

My reading of the plotmath docs makes it clear that issuing (in base
graphics) the specification

par(cex = 2)

doubles symbols and regular text in subsequent plotmath expressions.
However, it is unclear to me what specifying cex _within_ the
annotation function using plotmath should do, and the following seems
to want to have it both ways: ignore/obey )or maybe recycle?)

plot(1,type="n", xaxt='n', yaxt='n', ann=FALSE)
 text(1,1,labels=expression(atop(sigma,"some text")),cex = 2)
## obeys the cex specification in symbols and text

HOWEVER

plot(1,type="n", xaxt='n', yaxt='n', ann=FALSE)
 text(1,1,labels=expression(atop(atop(sigma,"some text"),"another
level")),cex = 2)
## ???

For even more fun, try:

plot(1,type="n", xaxt='n', yaxt='n', ann=FALSE)
text(1,1,labels=expression(atop(atop(sigma,"some text"),"another level")),cex = 1:2)
##????

So I confess to being flummoxed. Enlightenment would be much appreciated.

Cheers,
Bert





______________________________________________
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, MD
West Hartford, CT




--

Bert Gunter
Genentech Nonclinical Biostatistics

Internal Contact Info:
Phone: 467-7374
Website:
http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm

David Winsemius, MD
West Hartford, CT

______________________________________________
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