如何解决 ggplot2 标签中 "for" 的问题

How to fix problem with "for" in the ggplot2 label

我正在尝试制作一个带有小平面的图并在每个小平面中添加注释。

我希望注释看起来像“p for trend=0.001”,就像这张图片的情节一样。

我制作的情节如下所示:

ann_text <- data.frame(x = rep(5,6), y = rep(1,6),
                       conf.low = rep(5,6), conf.high = rep(5,6),
                       term = c('A', 'B', 'C', 'D', 'E', 'F'), 
                       pvalue = c("==0.04", "<0.001", "==0.999", "==0.999", "==0.99", "==0.99"))
ann_text$term <- factor(ann_text$term)


p <- ggplot(ann_text, aes(x = x, y = y)) +
  facet_wrap(.~term) +
    geom_text(data = ann_text, 
            aes(label=paste0(rep('italic(p)~fo~trend', 6), pvalue)), 
            parse = TRUE, size = 7)
p

我想我快到了,但是注释中缺少“r”,因为当我添加“r”时,它会引发以下错误消息。

Error in parse(text = text[[i]]) : <text>:1:14: unexpected '~'
1: italic(p)~for~
                 ^

我该如何解决这个问题?

一些想法:

我认为,在这种情况下,for 被识别为类似于函数、命令或运算符的东西。

然后 R 等待一些东西:for == bla-bla, for(bla-bla) 等等...

如何解决:

我试图用拉丁 unicode f o r 字符解决这个问题。但是没有用。

但是我们有西里尔小写字母O,呵呵。它有帮助! ;)

您修改后的代码:

ann_text <- data.frame(x = rep(5,6), y = rep(1,6),
                       conf.low = rep(5,6), conf.high = rep(5,6),
                       term = c('A', 'B', 'C', 'D', 'E', 'F'), 
                       pvalue = c("==0.04", "<0.001", "==0.999", "==0.999", "==0.99", "==0.99"))
ann_text$term <- factor(ann_text$term)


p <- ggplot(ann_text, aes(x = x, y = y)) +
    facet_wrap(.~term) +
    geom_text(data = ann_text, 
              aes(label=paste0(rep('italic(p)~f\U043Er~trend', 6), pvalue)), 
              parse = TRUE, size = 7)
p

输出:

在单引号表达式中使用双引号指定您不想解释为代码的字符串。顺便说一句,您不需要使用 rep(),因为 paste0() 是矢量化的,并且会将 'italic(p)~"for trend"' 部分应用于许多 pvalue 元素。所以,像这样:

p <- ggplot(ann_text, aes(x = x, y = y)) +
  facet_wrap(.~term) +
    geom_text(data = ann_text, 
            aes(label=paste0('italic(p)~"for trend"', pvalue)), 
            parse = TRUE, size = 7)

p