如何使用superscript parse = TRUE来转义注释文本?

时间:2017-08-16 19:16:43

标签: r ggplot2

我有一个情节,我需要添加一个注释,然后在该带注释的文本上附加一个上标。像这样。

p <- p + ggplot2::annotate('text', x, y, label=paste0(label,paste0("^", i)), parse=TRUE)

我迭代一些i,然后希望标签(i)与i上标。问题是我然后得到以下错误:

Error in parse(text = as.character(lab)) : <text>:1:7: unexpected symbol 
1: Super. Computer
           ^

为什么char输入Super. Computer不适合解析?我可以转义文本并只留下附加的上标用于解析吗?像\text{Super. Computer}^1

这样的东西

是否还有其他方法可以将上标附加到带注释的文本中?

更新以下答案并非最佳,请参阅此计数器示例中的两个问题:

library(ggplot2)  
library(latex2exp)

p <- ggplot(data=mtcars, aes(x=cyl, y=mpg))+ geom_point()

i <- 1
label <- "Super. Computer\n  of tomorrow"
p <- p + ggplot2::annotate('text', x=6, y=30,
                           label=TeX(paste0(label,paste0("^", i)), output="character"), 
                           fontface='bold',parse=TRUE)
print(p)

问题:

  1. 字体参数被忽略
  2. \ n后面的空格将从输出中删除
  3. 在上标
  4. 之前有一些差距

1 个答案:

答案 0 :(得分:2)

基于latex2exp的解决方案:

library(ggplot2)
library(latex2exp)
p <- ggplot(data=mtcars, aes(x=cyl, y=mpg))+ geom_point()

i <- 10
label <- paste0('\\textbf{$\\overset{Super.\\,\\,\\, Computer}{of\\, Tomorrow$^{',i,'}}}')
p <- p + ggplot2::annotate('text', x=6, y=30,
     label=TeX(label, output="character"), parse=TRUE)
print(p)

enter image description here