将`expression()`与`\n`结合起来

Rob*_*ong 4 r ggplot2 plotmath

我有一个ggplot,我expression(phantom(x) >=80)在标签文本中用来获得一个正确的大于或等于的符号.

但是我还需要紧下面(N = ...):

require(ggplot2)
.d <- data.frame(a = letters[1:6], y = 1:6)

labs <- c("0-9\n(N=10)","10-29\n(N=10)","30-49\n(N=10)", +
   "50-64\n(N=10)","65-79\n(N=10)", expression(phantom(x) >=80))

ggplot(.d, aes(x=a,y=y)) + geom_point() + 
   scale_x_discrete(labels = labs)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我如何结合expression()逃生\n

pla*_*pus 12

正如@otsaw在回答你之前的问题时所说的那样,plotmath(并因此expression)不允许换行.
但是,作为一个黑客,你可以使用atop?80出现在上面(N=10).但是你很快就会看到它与其他标签不匹配:

labs <- c("0-9\n(N=10)","10-29\n(N=10)","30-49\n(N=10)", 
          "50-64\n(N=10)","65-79\n(N=10)", 
          expression(atop(phantom(x) >=80, (N==10))))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

因此,作为进一步的黑客攻击,您可以将其他标签作为表达式传递:

labs <- c(expression(atop(0-9,(N==10))),expression(atop(10-29,(N==10))),
          expression(atop(30-49,(N==10))), expression(atop(50-64,(N==10))),
          expression(atop(65-79,(N==10))), expression(atop(phantom(x) >=80, (N==10))))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是当然你有@otsaw解决方案(使用Unicode),这个解决方案不那么冗长:

labs <- c("0-9\n(N=10)","10-29\n(N=10)","30-49\n(N=10)", 
          "50-64\n(N=10)","65-79\n(N=10)", 
          "\u2265 80\n(N=10)")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述