[R] Plots: displaying mathematical symbols in specific fonts
Prof Brian Ripley
ripley at stats.ox.ac.uk
Mon Feb 20 18:53:23 CET 2006
On Mon, 20 Feb 2006, Ed Merkle wrote:
> Dear SavioRs,
>
> I am doing some research where characters in different microsoft
> fonts serve as experimental stimuli. Hence, in plot labels, I would
> like to display the characters in specific microsoft fonts. I have
> figured out how to display letters and numbers, but I am having
> trouble with symbols such as capital delta. Before I go further, I
> am using R 2.2.1 on Windows XP with everything in English. I am
> trying to save my plot as a windows metafile.
>
> To display different characters in verdana, for example, I first edit
> the Rdevga file so that it contains verdana. I can then get verdana
> letters and numbers on the plot using a text() command. Things
> within an expression() command, however, are not displayed in the
> desired font. For example,
No, they are *always* displayed in font 5, as the Rdevga file actually
says. Verdana is not a mathematical font, and what you are looking for is
the Greek letter Delta, not the mathematical symbol.
> windows()
> plot(rnorm(15),rnorm(15))
> text(0,0,expression(Delta),font=10)
>
> displays a capital delta, but it is not in font #10 within Rdevga. I
> can get characters that have one of the first 255 ascii codes
Hmm, there are only 128 ASCII codes. I guess you mean you are in CP1252
aka WinAnsi, the Windows approximation to ISO Latin-1, and so can only
access the (somewhat less than) 256 glyphs of that charset.
> using
> chars8bit() in the sfsmisc package. One example is the division sign:
>
> text(0,0.2,chars8bit(247),font=10)
You don't need that: the standard octal and hex escapes work. But if you
want to draw symbols you should probably be using points() and pch=.
E.g.
points(0, 0.2, font=10, pch=247)
> I have not been able to display other symbols in microsoft fonts,
> however. Is this possible to do in R? All replies are appreciated.
Yes, but only by switching to a Greek locale. For example
Sys.setlocale("LC_CTYPE", "greek")
plot(1:10)
text(8,2, "\xC4", font=10)
and that only on an NT-based version of Windows and the R-devel version of
R.
It's easier on Unix-alikes in a UTF-8 locale, as then you can use Unicode
escapes like \u0394. But Windows does not have UTF-8 locales (although
one day R may fake them -- actually internally it already can but there is
no I/O support). There you could also do
text(8, 2, "\u0394")
points(5, 7, font=4, pch=0x0394)
at least if you have fonts which support Greek.
--
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