【问题标题】:Add greek letters to axis tick labels in R将希腊字母添加到 R 中的轴刻度标签
【发布时间】:2012-10-15 14:45:15
【问题描述】:

我有我的轴刻度:

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

现在我想给它们贴上标签。文本应该是这样的:

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

但我希望 alpha 看起来像希腊字符。 谢谢!

【问题讨论】:

  • 好吧,我有不止一个expression(),所以我想知道该怎么做。
  • 这与重复问题不同 - OP 需要组合表达式向量。以前也有人问过这个问题,但我现在找不到一个好的链接。

标签: r


【解决方案1】:

如果有几个标签,手工制作这些是可以的,但是很乏味且不是自动化的。有一些方法可以将单个表达式组合成一个表达式“向量”,我们可以自动构建单个表达式。这是一种方法,我忘记了是否还有其他方法,或者即使这是规范的方法(之前在 StackOverflow [包括我!] 上已询问并回答了一般问题,但我无法在非常快速的搜索中找到它)。

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)

哪个产生

我将展示阶段分开。第一个是

> 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

生成调用列表。

第二步是把这些组合成一个表达式,我用do.call()做的

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

你当然可以结合这些:

labs <- do.call(expression, lapply(alpha, function(x) bquote(alpha == .(x))))
axis(4, at = seq(1, by = 2, length = 5),
     labels = labs, las = 1)

【讨论】:

  • +1 在example(plotmath) 中编码的第二个数字在for 循环中为此使用了substitute()(即,它使用与您的基本相同的策略)。
【解决方案2】:

您可以使用expression 而不必使用paste

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

【讨论】:

  • 您可以通过一些额外的 jiggery-pokery 自动执行此操作。以一种方式查看我的答案。
猜你喜欢
  • 1970-01-01
  • 2011-08-28
  • 1970-01-01
  • 2014-02-01
  • 1970-01-01
  • 2017-07-22
  • 2019-02-06
  • 2017-01-31
相关资源
最近更新 更多