[R] Plotmath bug or my misunderstanding?

P Ehlers ehlers at ucalgary.ca
Sun May 13 18:47:23 CEST 2012


Bert: inline

On 2012-05-13 7:43, 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?

Yes, that's my understanding. With your text() call above, the
size of "another level" is what text(x,y,lab="another text",cex=2)
will print.

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

I don't think it's possible to nest atop()s and have all members
of the same cex.

Anyway, atop() is really the wrong tool for this sort of thing.
It can be a useful quick fix, but I usually prefer the 'multiple
lines' approach for its greater flexibility.

Peter Ehlers

>
>
> Cheers,
> Bert
>
>
>
> On Sat, May 12, 2012 at 9:27 PM, David Winsemius<dwinsemius at 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 at 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
>>
>
>
>



More information about the R-help mailing list