如何解决 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
我正在尝试制作一个带有小平面的图并在每个小平面中添加注释。
我希望注释看起来像“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