ggplot轴标签中的下标字母

时间:2013-06-27 04:50:02

标签: r ggplot2

另一个出版图,另一天在ggplot2中调整了一些东西...我在唠叨?我不确定......

dat <- data.frame(x = rnorm(100), y = rnorm(100))
ggplot(dat, aes(x=x,y=y)) +
    geom_point() +
    labs(y=expression(Blah[1]))

dat <- data.frame(x = rnorm(100), y = rnorm(100))
ggplot(dat, aes(x=x,y=y)) +
    geom_point() +
    labs(y=expression(Blah[1d]))

我正在尝试找出如何在轴标签中包含下标字母。第一个例子只是一个数字,只要你在方括号中有一个字符就会失败。 Blah [下标(1d)]基本上就是我需要的,但我无法弄清楚如何让它让我在下标中有字母。尝试了各种变体,包括paste()等。

当然,要增加挫折......

labs(y=expression(Blah[12])) - 这有效

labs(y=expression(Blah[d])) - 这有效

labs(y=expression(Blah[d1])) - 这有效

labs(y=expression(Blah[1d])) - 这失败了。

思想?

2 个答案:

答案 0 :(得分:62)

我可以想到两种比使用paste更好的方法:

 ggplot(dat, aes(x=x,y=y)) +
     geom_point() +
     labs(y=expression(Blah[1*d]))
 ggplot(dat, aes(x=x,y=y)) +
     geom_point() +
     labs(y=expression(Blah["1d"]))

R中的标记(或“名称”或“符号”)不应以数字开头。因此,您可以通过引用或通过非空格分隔符1运算符分隔d*来解决此限制。将“纯数字文字”与“合法的R符号或标记”“连接”或“连接”。

只需取消订阅百分号:

 ggplot(dat, aes(x=x,y=y)) +
    geom_point() +
    labs(y=expression(Blah[1*d]*"%"))

将parens放在pct-sign周围:

expression(Blah[1*d]*"(%)")

%字符在R解析中具有特殊含义,因为它表示用户定义的中缀运算符的开头。因此,将其用作文字需要引用它。同样的推理要求引用“for”和“in”,因为它们在R的“保留字”组中。还有其他保留字,(但forin是那些最让我失望的是。)输入:

 ?Reserved

答案 1 :(得分:7)

好。我发誓,我没有发布这个只是为了自己回答,尽管我得到它的速度很快(当你提问时总是这样!)

这是:

ggplot(dat, aes(x=x,y=y)) +
    geom_point() +
    labs(y=expression(Blah[1][d]))

最好发布答案而不是删除问题,因为它可能有一天会帮助别人。

除了'Blahs'之外,我真正想要的是expression(paste("Hb", A[1][c]," (%)",sep=""))

为什么paste0()在我这里不起作用。