如何在R的图表中添加文本上标?

15

我希望它看起来像这样:

R² = 一些值

我已经尝试了下面的代码,但它不起作用,显示的是“R(表达式(^2))= 一些值”:

text (25, 200, paste ("R (expression (^2)) =", round (rsquarelm2, 2)))

1
我在谷歌搜索中找到了这个。也许你可以修改它:text(-pi/2, 0, expression(hat(alpha) == (X^t * X)^{-1} * X^t * y)) - Mark Miller
3个回答

12

您需要的不是字符向量,而是表达式,因此这样做:

expression(R^2 == 0.85)

这是你所需要的。在这种情况下,您想要将另一个R操作的结果代入其中。为此,您需要使用substitute()bquote()。我发现后者更容易使用:

rsquarelm2 <- 0.855463
plot(1:10, 1:10, type = "n")
text(5, 5, bquote(R^2 == .(round(rsquarelm2, 2))))

使用bquote(),任何在.( )中的内容都会被求值,并将结果包含在返回的表达式中。


在我的情况下,我需要以^1-上标数字开头这一行,但似乎bquote不喜欢它。如果有任何建议,我很感兴趣(expression(""^1")不是解决方案,因为我想放置text_in_var的内容,而且似乎后者不容易用expression做到 - 而是用bquote(.(text_in_var))`容易。有什么建议吗? - JelenaČuklina

6

函数paste返回一个字符串,而不是表达式。对于这种情况,我更喜欢使用bquote函数:

text(25, 200, bquote( R^2 == .(rs), list(rs=round(rsquarelm2,2))))

4
如何在绘图中包含格式和数学值,可以参考FAQ 7.13
例如,如果ahat是你感兴趣的参数a的估计器,请使用以下代码:
title(substitute(hat(a) == ahat, list(ahat = ahat)))
(注意是‘==’而不是‘=’)。有时候,bquote()提供了一种更紧凑的形式,例如:
title(bquote(hat(a) = .(ahat)))
其中用‘.()’括起来的子表达式将被替换为它们的值。 demo(plotmath)也很有用。
在这种情况下,您可以使用以下任一方法:
title(substitute(R^2 = rsq, list(rsq = format(rsquarelm2, digits = 2))))

或者

title(bquote(R^2 == .(format(rsquarelm2, digits = 2))))

(此处更适合使用format而非round,因为您想要控制值的显示方式而不是创建值本身的近似值。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接