7

I have my axis ticks:

axis(4,at=c(1.6526,1.9720,2.6009,3.3403),las=1)

now I want to label them. The text should be something like this:

labels=c("alpha=0.1","alpha=0.05","alpha=0.01","alpha=.001")

But I want alpha to look like the greek character. Thanks!

mhartm
  • 73
  • 1
  • 5

2 Answers2

8

You can use the expression without having to use paste

axis(4,at=c(0.75,1.75),labels=c(expression(alpha==0.1),expression(alpha==0.2)),las=1)
gd047
  • 29,749
  • 18
  • 107
  • 146
5

Crafting these by hand is OK if there are a few labels, but is tedious and not-automated. There are ways to combine individual expression into an expression "vector", and we can automate the construction of the individual expressions. Here is one way, I forget if there are other ways or even if this is the canonical way (the general issue has been asked and answered on StackOverflow [including by me!] before but I couldn't find it in a very quick search).

op <- par(mar = c(5,4,4,6) + 0.1)
plot(1:10)
axis(1)
labs <- lapply(alpha, function(x) bquote(alpha == .(x)))
axis(4, at = seq(1, by = 2, length = 5),
     labels = do.call(expression, labs), las = 1)
par(op)

Which produces

enter image description here

I separated the the stages for exposition. The first is

> labs <- lapply(alpha, function(x) bquote(alpha == .(x)))
> labs
[[1]]
alpha == 0.1

[[2]]
alpha == 0.05

[[3]]
alpha == 0.01

[[4]]
alpha == 0.005

[[5]]
alpha == 0.001

which produces a list of calls.

The second step is to combine these into an expression, which I do with do.call()

> do.call(expression, labs)
expression(alpha == 0.1, alpha == 0.05, alpha == 0.01, alpha == 
    0.005, alpha == 0.001)

You can of course combine these:

labs <- do.call(expression, lapply(alpha, function(x) bquote(alpha == .(x))))
axis(4, at = seq(1, by = 2, length = 5),
     labels = labs, las = 1)
Gavin Simpson
  • 170,508
  • 25
  • 396
  • 453
  • +1 The second figure coded up in `example(plotmath)` uses `substitute()` in a `for` loop for this (i.e. it uses an essentially identical strategy to yours). – Josh O'Brien Oct 25 '12 at 14:30