如何将解析函数中的文本与其他(未解析的)文本合并以进行图注?

时间:2019-03-29 16:58:22

标签: r ggplot2

我正在尝试向图上添加一个简单的批注:“ R ^ 2:0.90”,其中2显示为指数。我遇到了问题,因为parse函数从我的R平方值中删除了结尾的0,但是我不知道如何将已解析的字符串和未解析的字符串粘贴在一起。

R2 <- 0.90
R2.ann <- parse(text=(paste("R^2:", sprintf("%.2f", round(R2,2)), sep="")))
R2.ann <- paste(parse(text="R^2"), ": ", sprintf("%.2f", round(R2,2)), sep="")
# And other variations on this, using as.character() or separating the parts into individual variables

# Here is a simple ggplot that the annotation right in the middle
ggplot(data=data.frame(0,0), aes(x = 0, y = 0)) + geom_point(color="white") + annotate("text", label=R2.ann, x=0, y=0)

1 个答案:

答案 0 :(得分:3)

首先,您需要创建一个有效的?plotmath表达式。由于需要使用R对其进行解析,因此它必须是有效的表达式。您可以将?plotmath中的数字和字符串与*组合在一起。所以一个正确的表达是

expression(R^2 * ": * "0.1")

例如。我们可以使用bquote插入您的实际值。

bquote(R^2 * ": " * .(sprintf("%.2f", round(R2,2))))

但是ggplot中的annotate()命令需要采用一个字符值,而不是表达式,因此我们可以deparse()这样做。

R2.ann <- deparse(bquote(R^2 * ": " * .(sprintf("%.2f", round(R2,2)))))

然后,在进行绘制时,您需要告诉annotate()它需要进行解析

ggplot(data=data.frame(0,0), aes(x = 0, y = 0)) + 
  geom_point(color="white") + 
  annotate("text", label=R2.ann, x=0, y=0, parse=TRUE)