[R] scalable < > delimiters in plotmath

David Winsemius dwinsemius at comcast.net
Sun Sep 12 21:42:29 CEST 2010


On Sep 12, 2010, at 6:15 AM, baptiste auguie wrote:

> Thanks everyone. I've also had a look at plotmath.c where bgroup is
> defined for "[", "{", "(", "." but not "<". It seems quite trivial to
> add it, at first sight, however there is a part that I don't
> understand in the RenderDelim routine,
>
> static BBOX RenderDelim(int which, double dist, int draw,  
> mathContext *mc,
> 			pGEcontext gc, pGEDevDesc dd)
> {
>
> // [... snipped ...]
>
>    case '(':
> 	top = 230; ext = 231; bot = 232; mid = 0;
> 	break;
>    case ')':
> 	top = 246; ext = 247; bot = 248; mid = 0;
> 	break;
>
> These integer codes make no sense to me, I have no clue which ones I
> should use for < and >.

Does this help? (I think they are using Symbol PS fonts with decimal  
indexing.)

 > as.octmode(c(230, 231, 232, 246, 247, 248) )
[1] "346" "347" "350" "366" "367" "370"
   plot(1,1, xlab= expression(
symbol("\346")~    # upper 1/3 of left paren
symbol("\347")~    # to left of center bar
symbol("\350")~    # lower 1/3 of left paren

symbol("\366")~    # upper 1/3 of right paren
symbol("\367")~    # to right of center bar
symbol("\370") ) ) # lower 1/3 of right paren

(caveat: Maybe not standard glyph-names.)

I added octal annotation to the TestChars(font=5) call that the points  
help page offers:

TestChars(font=5)
for(j in 1:14) {
     for(i in 0:16){
         text(i+0.2, j+.6, labels=as.octmode(i+(j+1)*16), cex=.5)}}

I do not see a trio or pair of glyphs that would form an angle bracket.

-- 

David.


> As far as I understand these codes might
> correspond to extended ascii characters whose boundaries and positions
> we want to borrow. Then again, maybe it's something else entirely.
>
> Any hints?
>
> Best wishes,
>
> baptiste
>
>
>
>
> On 12 September 2010 03:27, David Winsemius <dwinsemius at comcast.net>  
> wrote:
>>
>> On Sep 11, 2010, at 9:00 PM, Peter Ehlers wrote:
>>
>>> On 2010-09-11 16:14, Dennis Murphy wrote:
>>>>
>>>> Hi Baptiste,
>>>>
>>>> You need to use the symbol("\nnn") concept, where nnn denotes the  
>>>> octal
>>>> symbol number. For<  it's 074 and for>  it's 076. This little  
>>>> test seemed
>>>> to
>>>> work:
>>>>
>>>> plot(1, 1, main = expression(symbol("\074")~'x, y'~symbol("\076")))
>>>>
>>>> HTH,
>>>> Dennis
>>>
>>> It's a matter of taste, but I would use "\341" and "\361".
>>> However, these are still not scalable, AFAICS.
>>
>> Not exactly scalable angles, but you can fake it:
>>
>> plot(1, 1, main = expression(symbol("\341")~scriptstyle( atop(x,y)
>> )~symbol("\361")), cex.main=3)
>>
>> scriptstyle shrinks the inner atop() material, and since I tested  
>> on a Mac
>> it should work for Baptiste.
>>
>> --
>> David.
>>>
>>>  -Peter Ehlers
>>>
>>>>
>>>> On Sat, Sep 11, 2010 at 10:01 AM, baptiste auguie<
>>>> baptiste.auguie at googlemail.com>  wrote:
>>>>
>>>>> What do people use to show angle brackets<  >  in R graphics?  
>>>>> Have I
>>>>> missed something obvious?
>>>>>
>>>>> Thanks,
>>>>>
>>>>> baptiste
>>>>>
>>>>> On 9 September 2010 17:57, baptiste auguie
>>>>> <baptiste.auguie at googlemail.com>  wrote:
>>>>>>
>>>>>> Dear list,
>>>>>>
>>>>>> I read in ?plotmath that I can use bgroup to draw scalable  
>>>>>> delimiters
>>>>>> such as [ ] and ( ). The same technique fails with<  >   
>>>>>> however, and I
>>>>>> cannot find a workaround,
>>>>>>
>>>>>> grid.text(expression(bgroup("<",atop(x,y),">")))
>>>>>>
>>>>>> Error in bgroup("<", atop(x, y),">") : invalid group delimiter
>>>>>>
>>>>>> Regards,
>>>>>>
>>>>>> baptiste
>>>>>>
>>>>>> sessionInfo()
>>>>>> R version 2.11.1 (2010-05-31)
>>>>>> x86_64-apple-darwin9.8.0
>>
>> David Winsemius, MD
>> West Hartford, CT



More information about the R-help mailing list