[R] Expressions in factor labels on postscript plots

Duncan Murdoch murdoch at stats.uwo.ca
Fri Jan 4 10:47:33 CET 2008

On 03/01/2008 6:29 PM, kyselad wrote:
> I'm trying to put Greek letters in factor labels on a boxplot. Using the
> expression() format works great in axis labels, but seems not to cooperate
> when applied to factor labels. More precisely, I'm assigning the labels from
> a factor variable using:
> var.order <- ordered(var, levels = c("A", "B"), labels=c(C, D) )
> Then I create a boxplot with postscript output. If I assign C and D as
> quoted text strings, they show up fine as regular text. When I try
> expression() for C or D, it chokes.
> Any ideas here? As a potential complication, I need mixed Greek and
> non-Greek characters in the labels. Of course, that's easy enough if I can
> get expression() working for me.
> Thanks in advance for any suggestions.

You need to use the names=expression() argument to boxplot.  There isn't 
an easy way to save the expressions as factor labels (which must be 
character values, so you'd need to use parse() to convert them to 
expressions in the boxplot call), but you can do something like this:

x <- rnorm(100)
var <- sample(c("A", "B"), 100, rep=TRUE)
var.order <- ordered(var, levels=c("A", "B"))
boxplot(x ~ var.order, names=expression("C", Delta))

If you really want to attach those expressions to var.order, you could 
define your own attribute and put them there, e.g.

attr(var.order, "namesexpr") <- expression("C", Delta)
boxplot(x ~ var.order, names=attr(var.order, "namesexpr"))

Be careful what attribute name you use; some of them (e.g. "names") are 
already used for other purposes.

Duncan Murdoch

More information about the R-help mailing list