简体   繁体   中英

Add greek letters to axis tick labels in 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!

您可以使用expression而无需使用paste

axis(4,at=c(0.75,1.75),labels=c(expression(alpha==0.1),expression(alpha==0.2)),las=1)

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

在此输入图像描述

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)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM