Jem*_*s42 6 r ggplot2 plotmath
示例代码:
rsq <- round(cor(mtcars$disp, mtcars$mpg)^2, 2) # rsq = 0.72
ggplot(mtcars, aes(x = disp, y = mpg)) +
geom_point() +
geom_smooth(method = lm, aes(color = "Linear")) +
scale_color_discrete(labels = expression(paste("R"^2, " = ", rsq)))
Run Code Online (Sandbox Code Playgroud)
我希望将图例显示为R² = 0.72.
我知道我可以使用unicode符号来获取上标,但总的来说我认为必须有一种方法来组合数学表达式和存储在对象中的计算值.
我试图玩eval和各种组合paste,但似乎我一直在遇到同样的问题.
编辑#1:
我试着使用bquote按照这个答案是这样的:
scale_color_discrete(labels = bquote(R^2 == .(rsq)))
原来只会将图例渲染为==.
编辑#2:
即使下面的答案有效,似乎......对于更复杂的表达式来说非常不方便,比如:

我仍然希望有一个更简单的解决方案.
事实证明bquote事情很接近.
这有效(尽管感觉......不是最理想的):
scale_color_discrete(labels = as.expression(bquote(R^2~"="~.(rsq))))
Run Code Online (Sandbox Code Playgroud)
还在工作:
scale_color_discrete(labels = as.expression(bquote(R^2 == .(rsq))))
Run Code Online (Sandbox Code Playgroud)
显然~需要将这些元素"粘贴"在一起,而不实际使用paste()它们?和as.expression做什么expression不能.我不确定到底发生了什么,但唉,它有效:

非常感谢Peter Dalgaard!