ggplot轴标签中的下标字母

nzc*_*ops 60 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]))
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

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

思考?

42-*_*42- 66

我可以想到两种比使用更好的方法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"]))
Run Code Online (Sandbox Code Playgroud)

R中的标记(或"名称"或"符号")不应以数字开头.所以,你要么通过引述或通过分离避开这一限制1,并d通过非空格分隔符,该*运营商.将"纯数字文字"与"合法R"符号或标记"连接"或"连接".

要获得取消订阅的百分号,只需:

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

将parens放在pct-sign周围:

expression(Blah[1*d]*"(%)")
Run Code Online (Sandbox Code Playgroud)

%字符在R解析中具有特殊含义,因为它表示用户定义的中缀运算符的开头.因此,将其用作文字需要引用它.


nzc*_*ops 9

好的.虽然我很快得到它(当你问一个问题的时候总是如此!我在这里说:

ggplot(dat, aes(x=x,y=y)) +
    geom_point() +
    labs(y=expression(Blah[1][d]))
Run Code Online (Sandbox Code Playgroud)

最好发布答案而不是删除问题,因为它可能有助于其他人.

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

为什么paste0()不在这里工作是超出我的.

  • `paste0`不是plotmath函数.`paste`是一个plotmath函数,除了它具有与`base :: paste`函数不同的语义.特别是它没有'sep'参数. (7认同)