[R] scalable < > delimiters in plotmath
Paul Murrell
p.murrell at auckland.ac.nz
Sun Sep 12 22:11:19 CEST 2010
Hi
On 13/09/2010 7:57 a.m., baptiste auguie wrote:
> Oh, right I see. I was completely off then. Maybe it's not so easy to
> add<> delimiters after all, I'll have to look at the list of symbol
> pieces to see if these can be constructed too.
The plotmath stuff assumes a font with an Adobe Symbol encoding. The
characters we have to play with are shown at
http://www.stat.auckland.ac.nz/~paul/R/CM/AdobeSym.pdf.
You can see the components of "growable" delimiters on the bottom two
rows.
Paul
> Thanks,
>
> baptiste
>
> On 12 September 2010 21:42, David Winsemius<dwinsemius at comcast.net> wrote:
>>
>> 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
>>
>>
>>
>
> ______________________________________________
> 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.
--
Dr Paul Murrell
Department of Statistics
The University of Auckland
Private Bag 92019
Auckland
New Zealand
64 9 3737599 x85392
paul at stat.auckland.ac.nz
http://www.stat.auckland.ac.nz/~paul/
More information about the R-help
mailing list