[R] greek symbols using pch

Prof Brian Ripley ripley at stats.ox.ac.uk
Tue Oct 11 09:36:08 CEST 2005


This is now well off the topic of the subject line, but I am afraid some 
misinformation has been propagated (and that is the `bug').

There _are_ bugs in the code shown: the postscript fonts support 32:255, 
not 1:256, and pch:0:31 are not taken from the font.  It seems an 
uninformed modification of the code in ?postscript.


What locale are you in?  That's something bug.report() gives and the 
posting guide asks for (because it often matters).

The code given works (albeit with warnings) in an 8-bit locale, but it 
often will not work in a multi-byte locale. In particular it does not work 
in a UTF-8 locale for a postcript() device.

The help page for points() does point out clearly

      In a multi-byte locale
      such as UTF-8, numeric values of \code{pch} greater than or equal to
      32 specify a Unicode code point.

Thus in UTF-8, pch=167 should be interpreted as a Unicode code point, and 
that is not a Greek symbol.

The problem for postscript() (and X11()) is that the standard font=5 is 
not encoded in the locale's encoding but Adobe Symbol, so supplying 
Unicode characters is unsupported.

I think R is working as documented here, but the piece of documentation 
about font=5 is in a different place (it is driver-specific).

Internationalization support for the postscript() driver is work in 
progress (more features will appear in 2.3.0), but at present all you can 
expect to work in a UTF-8 locale are ISO Latin-1 characters, and symbols 
via plotmath.

(I am aware of a few things that are not quite right in the Unicode 
support: some are being fixed for 2.3.0.)


On Tue, 11 Oct 2005, ecatchpole wrote:

> On 11/10/05 01:12,  Earl F. Glynn wrote,:
>> "FISCHER, Matthew" <mjf at ansto.gov.au> wrote in message
>> news:283982AD9F3CD211B3AC00A0C983032F11443674 at paradise.ansto.gov.au...
>>
>>>    In a plot, can I specify pch to be a greek symbol? (I looked at
>>> show.pch() in the Hmisc package but couldn't see the right symbols in
>> there).
>>> If not, I guess I can get around this using text(x,y,expression()).
>>
>> I'm not sure where this is explained very well.  Having ?font give a clue
>> about this would be nice.
>>
>> Use font=5, the symbol font.  To see what's in font=5:
>>
>> par(font=5, las=1)
>> plot(0:15,0:15,type="n",ylim=c(15,0),
>>   main="Symbols in Font=5",
>>   xlab="", ylab="",xaxt="n", yaxt="n")
>> axis(BOTTOM<-1, at=0:15, 1:16)
>> axis(LEFT  <-2, at=0:15)
>> abline(v=0.5 + 0:14,
>>        h=0.5 + 0:14, col="grey", lty="dotted")
>>
>> # pch index of any cell is 16*row + column
>> for(i in 0:255)
>> {
>>   x <- i %%16;
>>   y <- i %/% 16;
>>   points(x,y,pch=i+1)
>> }
>
> When I execute this code, I get a calligraphic R or P occurring with all
> of the nifty characters, e.g. \clubsuit. For example
>
> par(font=5, las=1)
> plot(0:1, 0:1, type="n")
> points(.5, .5, pch=167)
>
> This occurs on screen and in postscript() output. And with R2.1.0 and
> R2.2.0. Is this a bug?
>
> Ted.

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595




More information about the R-help mailing list