在ggplot轴标签中的下标字母

另一张出版物的图表,另一天在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)]基本上就是我所需要的,但是我不知道如何让它在下标中有字母。 已尝试变化,包括粘贴()等

当然,为了增加挫折感

labs(y=expression(Blah[12])) – 这是有效的

labs(y=expression(Blah[d])) – 这是有效的

labs(y=expression(Blah[d1])) – 这是有效的

labs(y=expression(Blah[1d])) – 失败。

思考?

我可以想到两个比使用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中的令牌(或“名称”或“符号”)不应以数字开头。 所以你通过引用或者通过非空格分隔符*运算符分隔1d来避开这个限制。 这个“连接”或“连接”纯数字文字与合法的R符号或标记。

为了得到一个百分号,只需要:

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

围绕这个标志放置一些东西:

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

%字符在Rparsing中有特殊含义,因为它表示用户定义的中缀运算符的开始。 所以要用它作为文字,需要引用它。

好的。 我汗,我没有发表这个只是为了自己回答,尽pipe我有多快(总是当你问一个问题的方式!这里是:

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

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

“Blahs”放在一边,我真正想要的是expression(paste("Hb", A[1][c]," (%)",sep=""))

为什么paste0()在这里不起作用是超出我的。