Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add greek letters to axis tick labels in R

Tags:

r

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!

like image 463
mhartm Avatar asked Oct 25 '12 12:10

mhartm


People also ask

How do I add Greek symbols in R?

To make a Greek letter in R, You just use \ and then the name of the letter. If you want a subscript, like β1 , you use $\beta_1$ .

Can you use Greek letters in R?

R allows users great flexibility in creating and formatting plots. Greek letters can be included in titles and labels using the expression command.

How do you put Greek letters in ggplot2?

Adding Greek symbols to Plot Title In this method to use Greeks symbols in ggplot2 user need to call the expression function which is a base function of the R programming language, and pass the name of the Greek symbols to be used as the parameters to this function to get a Greek symbol to the ggplot2.


2 Answers

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)
like image 125
George Dontas Avatar answered Sep 24 '22 00:09

George Dontas


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)
like image 34
Gavin Simpson Avatar answered Sep 23 '22 00:09

Gavin Simpson